home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 8 / Revista CD Expert nº 08 CD1.iso / Utilitarios / Programacao / MS-DOS Interrupt List / inter60a / INTERRUP.B < prev    next >
Text File  |  1999-01-03  |  347KB  |  9,593 lines

  1. Interrupt List, part 2 of 18
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
  3. --------V-10BF--CX0000-----------------------
  4. INT 10 - Athena Digital HGCIBM.COM - INSTALLATION CHECK
  5.     AH = BFh
  6.     CX = 0000h (???)
  7. Return: CX = 0202h
  8.     DL = ??? (internal data, possibly version number)
  9. --------b-10BF00-----------------------------
  10. INT 10 - VIDEO - Compaq Extensions - SELECT EXTERNAL MONITOR
  11.     AX = BF00h
  12. Return: nothing
  13. Desc:    specify that the external monitor become the active monitor
  14. Note:    all registers preserved and the internal monitor is blanked
  15. SeeAlso: AX=BF01h,AX=BF12h,AH=12h/BL=35h
  16. --------b-10BF01-----------------------------
  17. INT 10 - VIDEO - Compaq Extensions - SELECT INTERNAL MONITOR
  18.     AX = BF01h
  19. Return: nothing
  20. Desc:    specify that the internal monitor become the active monitor
  21. Note:    all registers preserved and the external monitor is blanked
  22. SeeAlso: AX=BF00h,AX=BF12h,AH=12h/BL=35h
  23. --------b-10BF02-----------------------------
  24. INT 10 - VIDEO - Compaq Extensions - SET MASTER MODE OF CURRENT CONTROLLER
  25.     AX = BF02h
  26.     BH = master mode
  27.         04h CGA
  28.         05h EGA
  29.         07h MDA
  30. Return: nothing
  31. SeeAlso: AX=BF03h
  32. --------b-10BF03BX0000-----------------------
  33. INT 10 - VIDEO - Compaq Extensions - GET ENVIRONMENT
  34.     AX = BF03h
  35.     BX = 0000h
  36. Return: BH = active monitor
  37.         (00h = external, 01h = internal, 03h both, 04h neither)
  38.     BL = master mode (see #00211)
  39.     CH = ASIC type and version
  40.         00h (reserved, very early Compaq VGCs)
  41.         31h if QVision VGA
  42.     CL = switchable VDU modes supported (see #00212)
  43.     DH = internal monitor type (see #00213)
  44.     DL = external monitor type (see #00213)
  45. SeeAlso: AX=1A00h,AX=BF00h,AX=BF01h,AX=BF02h,AX=BF11h
  46.  
  47. (Table 00211)
  48. Values for Compaq video master mode:
  49.  00h    switchable VDU not present
  50.  04h    CGA
  51.  05h    EGA
  52.  07h    MDA
  53.  08h    switchable LCD controller present
  54.  09h    plasma VGA
  55.  0Ah    TFT (active-matrix) VGA
  56.  
  57. Bitfields for Compaq switchable VDU modes support:
  58. Bit(s)    Description    (Table 00212)
  59.  0    CGA supported
  60.  1,2    reserved (1)
  61.  3    MDA supported
  62.  4    BitBLT engine available
  63.  5    132-column support availble
  64.  6    640x480x256 mode available
  65.  7    8-bit DAC mode available
  66.  
  67. (Table 00213)
  68. Values for Compaq monitor type:
  69.  00h    none
  70.  01h    dual-mode monitor
  71.  02h    5153 RGB monitor (RGBI 16-color)
  72.  03h    Compaq Color monitor
  73.  04h    640x400 flat panel (Plasma CGA)
  74.  05h    VGC monochrome
  75.  06h    VGC color
  76.  07h    8-level mono LCD VGA (internal)
  77.     1024x768 mono VGA (external)
  78.  08h    16-level mono plasma VGA (internal)
  79.     1024x768 color VGA (external)
  80.  09h    4-level mono LCD CGA
  81.  0Ah    16-level mono LCD VGA
  82.  0Bh    active-matrix color VGA
  83.  0Ch    active-matrix mono VGA
  84.  0Dh    STN color VGA
  85. --------b-10BF04-----------------------------
  86. INT 10 - VIDEO - Compaq Extensions - SET MODE SWITCH DELAY
  87.     AX = BF04h
  88.     BH = new state of delay (00h enabled, 01h disabled)
  89. Return: nothing
  90. Note:    the 04/08/93 sytem ROM appears to use BL instead of BH; a future
  91.       version of the list will provide more definite information
  92. SeeAlso: AX=BF05h
  93. --------b-10BF05-----------------------------
  94. INT 10 - VIDEO - Compaq Extensions - ENABLE/DISABLE DISPLAY
  95.     AX = BF05h
  96.     BH = new state of video
  97.         00h off
  98.         01h on
  99. Return: nothing
  100. Note:    the 04/08/93 sytem ROM appears to use BL instead of BH; a future
  101.       version of the list will provide more definite information
  102. SeeAlso: AH=12h/BL=36h,AX=BF04h
  103. --------b-10BF06-----------------------------
  104. INT 10 - VIDEO - Compaq SLT/286 - READ GRAY SCALE TABLE
  105.     AX = BF06h
  106.     CL = address to be read from gray scale table
  107. Return: AL = bit 3-0 - Value read from gray scale table
  108.     CL = address to be read from gray scale table
  109. SeeAlso: AH=12h/BL=33h,AX=BF07h
  110. --------b-10BF07-----------------------------
  111. INT 10 - VIDEO - Compaq SLT/286 - WRITE GRAY SCALE TABLE
  112.     AX = BF07h
  113.     CH = value to write to gray scale table
  114.     CL = address to be written to gray scale table
  115. Return: nothing
  116. SeeAlso: AX=BF06h,AX=BF08h
  117. --------b-10BF08-----------------------------
  118. INT 10 - VIDEO - Compaq SLT/286 - WRITE COLOR MIX REGISTERS
  119.     AX = BF08h
  120.     CH = bits 7-4 green weight
  121.          bits 3-0 blue weight
  122.     CL = bits 7-4 unused
  123.          bits 3-0 red weight
  124. Return: nothing
  125. SeeAlso: AH=12h/BL=33h,AX=BF07h
  126. --------b-10BF09-----------------------------
  127. INT 10 - VIDEO - Compaq Extensions - TURN ON REVERSE VIDEO
  128.     AX = BF09h
  129. Return: CF clear
  130. Notes:    sets bit 6 of port 03CEh index 81h; in some cases also sets index 84h
  131.       to 6Fh and index 83h to 04h
  132.     supported by at least the QVision board and the LTE Lite ROM BIOS
  133. SeeAlso: AX=BF0Ah,AX=BF0Bh
  134. --------b-10BF0A-----------------------------
  135. INT 10 - VIDEO - Compaq Extensions - TURN OFF REVERSE VIDEO
  136.     AX = BF0Ah
  137. Return: CF clear
  138. Notes:    clears bit 6 of port 03CEh index 81h; in some cases also sets index 84h
  139.       to 80h and index 83h to FBh
  140.     supported by at least the QVision board and the LTE Lite ROM BIOS
  141. SeeAlso: AX=BF09h,AX=BF0Bh
  142. --------b-10BF0B-----------------------------
  143. INT 10 - VIDEO - Compaq Extensions - CHECK WHETHER VIDEO REVERSED
  144.     AX = BF0Bh
  145. Return: CF clear
  146.     AX = state (0000h normal video, 0001h reverse video)
  147. Note:    supported by at least the QVision board and the LTE Lite ROM BIOS
  148. SeeAlso: AX=BF09h,AX=BF0Ah
  149. --------b-10BF0C-----------------------------
  150. INT 10 - VIDEO - Compaq Extensions - SET DAC 6-BIT MODE
  151.     AX = BF0Ch
  152. Return: CF clear
  153. Desc:    specify that video DAC registers use only six bits of color info
  154. Note:    supported by at least the QVision board and the SystemPro XL ROM BIOS
  155. SeeAlso: AX=BF0Dh,AX=BF0Eh
  156. --------b-10BF0D-----------------------------
  157. INT 10 - VIDEO - Compaq Extensions - SET DAC 8-BIT MODE
  158.     AX = BF0Dh
  159. Return: CF clear
  160. Desc:    specify that video DAC registers use all eight bits of color info
  161. Note:    supported by at least the QVision board and the SystemPro XL ROM BIOS
  162. SeeAlso: AX=BF0Ch,AX=BF0Eh
  163. --------b-10BF0E-----------------------------
  164. INT 10 - VIDEO - Compaq Extensions - CHECK DAC 6-BIT/8-BIT mode
  165.     AX = BF0Eh
  166. Return: CF clear
  167.     AL = DAC mode
  168.         00h in 6-bit mode
  169.         01h in 8-bit mode
  170. Note:    supported by at least the QVision board and the SystemPro XL ROM BIOS
  171. SeeAlso: AX=BF0Ch,AX=BF0Dh
  172. --------b-10BF0F-----------------------------
  173. INT 10 - VIDEO - Compaq Extensions - SET HIGH ADRESS MAP REGISTER
  174.     AX = BF0Fh
  175.     BX = high address map location in megabytes, or
  176.         0000h to disable high address map, or
  177.         FFFFh to let ROM configure high address map
  178. Return: CF clear
  179.     AX = previous value of high address map register
  180. Notes:    supported by at least the QVision board and the SystemPro XL and LTE
  181.       Lite ROM BIOSes
  182. SeeAlso: AX=BF10h
  183. --------b-10BF10-----------------------------
  184. INT 10 - VIDEO - Compaq Extensions - GET HIGH ADDRESS MAP REGISTER
  185.     AX = BF10h
  186. Return: CF clear
  187.     AX = current value of high address map register
  188. Notes:    supported by at least the QVision board and the SystemPro XL and LTE
  189.       Lite ROM BIOSes
  190.     the Compaq QVision documentation (October 1993) says the value is
  191.       returned in BX, but this appears to be one of many typos
  192. SeeAlso: AX=BF0Fh
  193. --------b-10BF11-----------------------------
  194. INT 10 - VIDEO - Compaq Extensions - GET EXTENDED ENVIRONMENT
  195.     AX = BF11h
  196. Return: AL = BFh if supported
  197.         CF clear
  198.         ES:DI -> ASCII signature "COMPAQ"
  199.         ES:SI -> advanced functionality table (see #00214)
  200. Note:    supported by at least the QVision board and the LTE Lite and ProSignia
  201.       ROM BIOSes
  202. SeeAlso: AX=1A00h,AX=BF03h
  203.  
  204. Bitfields for Compaq advanced video functionality:
  205. Bit(s)    Description    (Table 00214)
  206.  31    future graphics extensions (reserved, set to 0)
  207.  30-16    reserved
  208.  15-12    available video memory in 256K blocks, less one (0000 = 256K, etc.)
  209.  11-8    reserved
  210.  7    QVision modes supported
  211.  6    Advanced VGA modes supported
  212.  5    Accelerated VGA modes supported
  213.  4    standard VGA modes supported
  214.  3-2    reserved
  215.  1    132-column modes supported
  216.  0    reserved
  217. --------b-10BF12-----------------------------
  218. INT 10 - VIDEO - Compaq Extensions - NEW ACTIVE MONITOR
  219.     AX = BF12h
  220.     BH reserved
  221.     BL = function mask (see #00215)
  222. Return: CF clear
  223. Notes:    this function is a NOP if the VGA subsystem is inactive or the current
  224.       Display Combination Code is 10h or higher
  225.     supported by at least the QVision board and the LTE Lite and ProSignia
  226.       ROM BIOSes
  227. SeeAlso: AX=BF01h,AX=BF02h,#00733
  228.  
  229. Bitfields for function mask:
  230. Bit(s)    Description    (Table 00215)
  231.  7    command mode
  232.     if set, bits 1 and 0 make the monitor active when set
  233.     if clear, bits 1 and 0 toggle the monitor's state when set
  234.  6-2    reserved
  235.  1    internal monitor
  236.  0    external monitor
  237. --------b-10BF13-----------------------------
  238. INT 10 - VIDEO - Compaq QVision - GAMMA CORRECTION
  239.     AX = BF13h
  240.     BL = subfunction
  241.         00h load gamma correction table for true-color mode
  242.         DS = BIOS data segment
  243.         01h set palette RAM bypass
  244.     BH = 00h
  245. Return: nothing
  246. Note:    these functions must be called after a video mode set, and are in
  247.       effect only for the current video mode
  248. SeeAlso: #00733
  249. --------V-10BFA0BXADAD-----------------------
  250. INT 10 - VIDEO - Compaq ADAPT.COM - INSTALLATION CHECK
  251.     AX = BFA0h
  252.     BX = ADADh
  253. Return: AX = BDBDh if newer ADAPT.COM installed
  254.         BX = BCD version (BH = major, BL = minor)
  255.         CL = ???
  256.         CH = ???
  257.         DL = ???
  258.     AX = ADADh if older version of ADAPT.COM installed
  259. Program: ADAPT is Compaq's Advanced Display Attribute Programming Tool, an
  260.       optionally-resident utility for setting display colors and cursor
  261.       size; when resident, it also includes a screen blanker
  262. SeeAlso: AX=BFA1h,AX=BFA2h,AX=DFA5h
  263. Index:    screen saver;ADAPT
  264. --------V-10BFA1-----------------------------
  265. INT 10 - VIDEO - Compaq ADAPT.COM - GET ???
  266.     AX = BFA1h
  267. Return: AX = BDBEh if supported
  268.         CH = current value of ???
  269.         DL = current value of ???
  270. SeeAlso: AX=BFA0h,AX=BFA2h
  271. --------V-10BFA2-----------------------------
  272. INT 10 - VIDEO - Compaq ADAPT.COM - SET ???
  273.     AX = BFA2h
  274.     CH = new value for ???
  275.     DL = new value for ???
  276. Return: AX = BDBEh if supported
  277. SeeAlso: AX=BFA0h,AX=BFA1h
  278. --------A-10C0-------------------------------
  279. INT 10 - CU Writer v1.4 - GO TO TEXT ROW AND COLUMN
  280.     AH = C0h
  281.     ???
  282. Return: ???
  283. SeeAlso: AH=B1h,AH=C1h,AH=C2h,AH=C3h,AH=C4h
  284. --------V-10C000-----------------------------
  285. INT 10 - S3 SpeedUp v3.00+ - INSTALLATION CHECK
  286.     AX = C000h
  287. Return: AX = FFFFh if installed
  288.         DX = version number (binary, DH=major, DL=minor)
  289.         BX = resident code segment
  290. Program: S3SPDUP is a freeware TSR by Dietmar Meschede to improve the speed
  291.       of chained video modes (both VESA and VGA Mode 13) on S3-chipset
  292.       video cards
  293. SeeAlso: AX=C001h,AX=C002h,AX=C003h,AX=D000h"S3VBE"
  294. --------V-10C001-----------------------------
  295. INT 10 - S3 SpeedUp v3.00+ - GET ACTIVE OPTIONS
  296.     AX = C001h
  297. Return: AX = FFFFh if function supported
  298.         BX = currently active options (see #00216)
  299. SeeAlso: AX=C000h,AX=C002h,AX=C003h
  300.  
  301. Bitfields for S3SpeedUp options:
  302. Bit(s)    Description    (Table 00216)
  303.  0    speed up banked VESA modes
  304.  1    speed up 320x200 VGA mode 13
  305. SeeAlso: #00222
  306. --------V-10C002-----------------------------
  307. INT 10 - S3 SpeedUp v3.00+ - SET ACTIVE OPTIONS
  308.     AX = C002h
  309.     BX = new value for active options (see #00216)
  310. Return: AX = FFFFh if function supported
  311. SeeAlso: AX=C000h,AX=C001h,AX=C003h,AX=D003h"S3VBE"
  312. --------V-10C003-----------------------------
  313. INT 10 - S3 SpeedUp v3.10+ - GET FLAGS
  314.     AX = C003h
  315. Return: AX = FFFFh if function supported
  316.         BX = flags
  317.         bit 0: SpeedUp is active
  318.         bit 1: Windows run after SpeedUp
  319. SeeAlso: AX=C000h,AX=C001h,AX=C002h,AX=D005h"S3VBE"
  320. --------V-10C004-----------------------------
  321. INT 10 - S3 SpeedUp v3.10+ - RESERVED FUNCTIONS
  322.     AX = C004h-C0FFh
  323. Return: AX = 5555h
  324. SeeAlso: AX=C000h
  325. --------A-10C1-------------------------------
  326. INT 10 - CU Writer v1.4 - OUTPUT TEXT
  327.     AH = C1h
  328.     ???
  329. Return: ???
  330. SeeAlso: AH=C0h,AH=C2h,AH=C3h,AH=C4h
  331. --------A-10C2-------------------------------
  332. INT 10 - CU Writer v1.4 - REVERSE TEXT
  333.     AH = C2h
  334.     ???
  335. Return: ???
  336. SeeAlso: AH=C0h,AH=C1h,AH=C3h,AH=C4h
  337. --------A-10C3-------------------------------
  338. INT 10 - CU Writer v1.4 - TEXT BAR
  339.     AH = C3h
  340.     ???
  341. Return: ???
  342. SeeAlso: AH=C0h,AH=C1h,AH=C4h
  343. --------A-10C4-------------------------------
  344. INT 10 - CU Writer v1.4 - TEXT MENU
  345.     AH = C4h
  346.     ???
  347. Return: ???
  348. SeeAlso: AH=C0h,AH=C1h,AH=C3h,AH=D0h
  349. --------V-10CB00-----------------------------
  350. INT 10 - UNCHAIN - SAVE CURRENT VGA REGISTERS
  351.     AX = CB00h
  352. Note:    combined with AX=CB06h, this function permits the use of video mode
  353.       13h together with the VGA's unchained mode
  354. SeeAlso: AX=CB06h,AX=CBFFh
  355. --------V-10CB01-----------------------------
  356. INT 10 - UNCHAIN - UPDATE PAGE 1 OFFSET
  357.     AX = CB01h
  358.     BX = offset of page 1
  359. Return: nothing
  360. Desc:    inform UNCHAIN of the location of video page 1 in video memory; the
  361.       default is 0000h
  362. SeeAlso: AX=CB02h,AX=CB03h,AX=CB04h,AX=CBFFh
  363. --------V-10CB02-----------------------------
  364. INT 10 - UNCHAIN - UPDATE PAGE 2 OFFSET
  365.     AX = CB02h
  366.     BX = offset of page 2
  367. Return: nothing
  368. Desc:    inform UNCHAIN of the location of video page 2 in video memory; the
  369.       default is 3E80h (16000, for 320x200)
  370. SeeAlso: AX=CB00h,AX=CB01h,AX=CB03h,AX=CB04h
  371. --------V-10CB03-----------------------------
  372. INT 10 - UNCHAIN - UPDATE PAGE 3 OFFSET
  373.     AX = CB03h
  374.     BX = offset of page 3
  375. Return: nothing
  376. Desc:    inform UNCHAIN of the location of video page 3 in video memory; the
  377.       default is 7D00h (32000, for 320x200)
  378. SeeAlso: AX=CB01h,AX=CB02h,AX=CB04h
  379. --------V-10CB04-----------------------------
  380. INT 10 - UNCHAIN - UPDATE PAGE 4 OFFSET
  381.     AX = CB04h
  382.     BX = offset of page 4
  383. Return: nothing
  384. Desc:    inform UNCHAIN of the location of video page 4 in video memory; the
  385.       default is BB80h (48000, for 320x200)
  386. SeeAlso: AX=CB01h,AX=CB02h,AX=CB03h,AX=CB05h
  387. --------V-10CB05-----------------------------
  388. INT 10 - UNCHAIN - SAVE PALETTE
  389.     AX = CB05h
  390. Return: nothing
  391. SeeAlso: AX=CB00h,AX=CB06h
  392. --------V-10CB06-----------------------------
  393. INT 10 - UNCHAIN - RESTORE VGA REGISTERS
  394.     AX = CB06h
  395. Return: nothing
  396. SeeAlso: AX=CB00h,AX=CB05h,AX=CBFFh
  397. --------V-10CBFF-----------------------------
  398. INT 10 - UNCHAIN - INSTALLATION CHECK
  399.     AX = CBFFh
  400. Return: AX = CCBBh if installed
  401. Program: UNCHAIN is a TSR by Colin Buckley which permits use of Borland
  402.       development tools with Mode X video in the absence of a second
  403.       monitor
  404. SeeAlso: AX=CB00h,AX=CB01h,AX=CB06h
  405. --------V-10CC00-----------------------------
  406. INT 10 - VIDEO - UltraVision - GET STATUS (INSTALLATION CHECK)
  407.     AX = CC00h
  408.     SI = magic value 0000h (if checking version)
  409. Return: CX = product signature
  410.         ABCDh UltraVision
  411.         5546h ('UF') UltraFont
  412.     AL = Ultravision extensions
  413.         00h enabled
  414.         FFh disabled
  415.     AH = card designator
  416.     BX:00F0h -> palette values (for compatibility with NEWFONT)
  417.     DX = support for high resolution modes
  418.         00h not active
  419.         01h active
  420.     SI = UltraVision version number (v1.2+), high byte=major,low byte=minor
  421.         unchanged for versions <1.2
  422. Note:    UltraFont is a simplified version of UltraVision for Toshiba;
  423.       only the signature in CX and the status in AL will be returned
  424. SeeAlso: AX=CC01h,AX=CC02h
  425. --------V-10CC01-----------------------------
  426. INT 10 - VIDEO - UltraVision - DISABLE EXTENSIONS
  427.     AX = CC01h
  428. Return: nothing
  429. Notes:    subsequent BIOS calls will be passed through to previous handler
  430.     should be followed immediately by mode set to restore normal EGA/VGA
  431.       state
  432. SeeAlso: AX=CC02h
  433. --------V-10CC02-----------------------------
  434. INT 10 - VIDEO - UltraVision - ENABLE EXTENSIONS
  435.     AX = CC02h
  436. Return: nothing
  437. Note:    should be followed immediately by mode set to restore previous
  438.       UltraVision state
  439. SeeAlso: AX=CC01h
  440. --------U-10CCAB-----------------------------
  441. INT 10 - HiFont - INSTALLATION CHECK
  442.     AX = CCABh
  443. Return: AX = ABCCh
  444. Program: HiFont is a 8x19 font driver for standard VGA by Solar Designer
  445. --------V-10CD00-----------------------------
  446. INT 10 - VIDEO - UltraVision - LOAD ULTRAVISION PALETTE (color EGA,VGA)
  447.     AX = CD00h
  448.     CL = palette table number (01h-07h for v1.x, 01h-0Fh for v2+)
  449.     DS:DX -> 16-byte palette register list (colors for registers 00h-0Fh)
  450. Return: nothing
  451. Notes:    if palette locking is in effect for the current mode, the new colors
  452.       will be displayed immediately; otherwise, the system reverts to the
  453.       default palette
  454.     palette table 0 is reserved for the default palette and cannot be set
  455.     UltraVision always sets the border color to black
  456. SeeAlso: AX=CD01h,AX=CD02h
  457. --------V-10CD01-----------------------------
  458. INT 10 - VIDEO - UltraVision - SET PALETTE LOCKING STATUS (color EGA,VGA)
  459.     AX = CD01h
  460.     CL = palette locking value
  461.         00h none
  462.         01h text modes only (02h,03h)
  463.         FFh all modes (all standard color text and graphics modes)
  464. Return: nothing
  465. Notes:    intended for video modes with 16 or fewer colors
  466. SeeAlso: AX=1000h,AX=1002h,AX=CD00h,AX=CD03h
  467. --------V-10CD02-----------------------------
  468. INT 10 - VIDEO - UltraVision - GET ULTRAVISION PALETTE (EGA,VGA)
  469.     AX = CD02h
  470. Return: CL = palette table number
  471.     DS:DX -> 17-byte palette register list (see #00217)
  472.     DS:SI -> current font names table (see #00218,#00219)
  473. Note:    only the font names are valid on monochrome EGA systems
  474. SeeAlso: AX=1009h,AX=CD00h
  475.  
  476. Format of UltraVision palette register list:
  477. Offset    Size    Description    (Table 00217)
  478.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  479.  10h    BYTE    border color
  480.  
  481. Format of UltraVision v2+ current font names table:
  482. Offset    Size    standard EGA    HiRes EGA    VGA    (Table 00218)
  483.  00h  8 BYTEs    N/A        F19 font    F20 font
  484.  08h  8 BYTEs    F14 font    F14 font    F14 font
  485.  10h  8 BYTEs    N/A        F11 font    F10 font
  486.  18h  8 BYTEs    F8 font        F8 font        F8 font
  487.  
  488. Format of UltraVision v1.x current font names table:
  489. Offset    Size    HiRes EGA    (Table 00219)
  490.  00h  8 BYTEs    F19/F14 font
  491.  08h  8 BYTEs    F11/F8 font
  492. --------V-10CD03-----------------------------
  493. INT 10 - VIDEO - UltraVision - GET PALETTE LOCKING STATUS (color EGA,VGA)
  494.     AX = CD03h
  495. Return: CL = palette locking value
  496.         00h none
  497.         01h text modes only
  498.         FFh all modes
  499. SeeAlso: AX=CD01h
  500. --------V-10CD04-----------------------------
  501. INT 10 - VIDEO - UltraVision - GET UltraVision TEXT MODE (EGA,VGA)
  502.     AX = CD04h
  503. Return: AL = mode number (see #00220)
  504. SeeAlso: AH=0Fh,AX=CC00h,AH=CDh
  505.  
  506. (Table 00220)
  507. Values for UltraVision video mode number:
  508.  11h    80x25
  509.  12h    80x43, 80x50
  510.  13h    80x34, 80x36
  511.  14h    80x60, 80x63
  512.  19h    94x25
  513.  1Ah    94x43, 94x50
  514.  1Bh    94x36
  515.  1Ch    94x63
  516.  21h    108x25
  517.  22h    108x43, 108x50
  518.  23h    107x34, 108x36
  519.  24h    108x60, 108x63
  520.  31h    120x25
  521.  32h    120x43, 120x50
  522.  33h    132x25
  523.  34h    132x44, 132x50
  524.  39h    120x36
  525.  3Ah    120x63
  526.  3Bh    132x36
  527.  3Ch    132x60
  528. Index:    video modes;UltraVision
  529. --------V-10CD05-----------------------------
  530. INT 10 - VIDEO - UltraVision - SET CURSOR TYPE (EGA,VGA)
  531.     AX = CD05h
  532.     CL = type
  533.         00h line cursor
  534.         FFh box cursor
  535. Return: nothing
  536. Note:    sets default cursor type for text-based programs
  537. SeeAlso: AH=01h,AX=CD06h
  538. --------V-10CD06-----------------------------
  539. INT 10 - VIDEO - UltraVision - GET CURSOR TYPE (EGA,VGA)
  540.     AX = CD06h
  541. Return: CL = type
  542.         00h line cursor
  543.         FFh box cursor
  544. SeeAlso: AH=03h,AX=CD05h
  545. --------V-10CD07-----------------------------
  546. INT 10 - VIDEO - UltraVision v1.2+ - SET UNDERLINE STATUS (EGA,VGA)
  547.     AX = CD07h
  548.     CL = hardware underline status (see #00221)
  549.     BL = foreground color for normal text (FFh = current)
  550.     BH = foreground color for bright text (FFh = current)
  551. Return: CL = hardware underline status
  552.     BL = current foreground color for normal text
  553.     BH = current foreground color for bright text
  554. Notes:    when underline or strikeout is enabled in color text modes, the
  555.       specified colors will be assigned temporarily to colors 01h and 09h,
  556.       allowing affected text to match non-underlined text.    The color
  557.       remapping uses values from the current onscreen palette regardless
  558.       of the palette locking status (see AX=CD01h)
  559.     specify the standard colors (BL=01h,BH=09h) to enable underline or
  560.       strikeout without color remapping
  561. SeeAlso: AX=CD08h
  562.  
  563. (Table 00221)
  564. Values for hardware underline status:
  565.  00h    off (color systems only)
  566.  01h    underline below characters
  567.  02h    strike through characters
  568. --------V-10CD08-----------------------------
  569. INT 10 - VIDEO - UltraVision v1.2+ - GET UNDERLINE STATUS (EGA,VGA)
  570.     AX = CD08h
  571. Return: CL = hardware underline status (see #00221)
  572.     BL = foreground color for normal text
  573.     BH = foreground color for bright text
  574. Note:    only CL is valid on monochrome EGA systems
  575. SeeAlso: AX=CD07h
  576. --------V-10CD10-----------------------------
  577. INT 10 - VIDEO - UltraVision - LOAD USER FONT (EGA,VGA)
  578.     AX = CD10h
  579.     BH = bytes per character (08h,0Ah,0Bh,0Eh,13h,14h)
  580.     CX = ABCDh load 9xN alternate font (v2+)
  581.        else number of characters to load
  582.         DX = character offset into font table
  583.         DS:SI -> 8-byte ASCII font name
  584.     ES:BP -> font definitions
  585. Return: AX = FFFFh if invalid font parameters
  586. Notes:    loads the designated characters into UltraVision's resident font area
  587.     should be followed by a video mode set to reload character generator
  588. SeeAlso: AX=1100h,AX=1103h
  589. --------V-10CD-------------------------------
  590. INT 10 - VIDEO - UltraVision - SET ULTRAVISION TEXT MODE (EGA,VGA)
  591.     AH = CDh
  592.     AL = text mode number (see #00220)
  593. Return: AX = CDCDh if invalid mode
  594. SeeAlso: AX=CD04h
  595. --------A-10D0-------------------------------
  596. INT 10 - CU Writer v1.4 - LOAD PICTURE
  597.     AH = D0h
  598.     ???
  599. Return: ???
  600. SeeAlso: AH=B0h"CU Writer",AH=C4h
  601. --------V-10D0-------------------------------
  602. INT 10 U - VIDEO - HP 100LX/200LX - SET ZOOM MODE
  603.     AH = D0h
  604.     AL = zoom mode
  605.         02h 80x25 mono
  606.         03h 80x25 color
  607.         80h 64x18 mono
  608.         81h 64x18 color
  609.         82h 40x25 mono
  610.         83h 40x25 color
  611.         84h 40x16 mono
  612.         85h 40x16 color
  613. Return: nothing
  614. Note:    zoom mode can only be changed within zoom modes of the same color
  615.       scheme; if needed, set to mono/color with AH=00h,AL=02h/03h; with
  616.       mono video modes AL=07h or AL=21h only 80x25 and 40x16 will work
  617.     the current zoom mode is stored in the BIOS data area at 0040h:009Fh
  618. SeeAlso: AH=D1h,AH=D4h
  619. --------V-10D000-----------------------------
  620. INT 10 - S3VBE/Core2.0 v3.00+ - INSTALLATION CHECK
  621.     AX = D000h
  622. Return: AX = FFFFh if installed
  623.         BX = resident code segment
  624.         DX = version (binary, DH = major, DL = minor)
  625. Program: S3VBE/Core2.0 is a freeware TSR by Dietmar Meschede to provide
  626.       VESA 2.0 services on S3-based video cards with VESA 1.2 BIOS
  627. SeeAlso: AX=D001h"S3VBE",AX=D002h"S3VBE",AX=D003h"S3VBE",AX=D005h"S3VBE"
  628. --------V-10D001-----------------------------
  629. INT 10 - S3VBE/Core2.0 v3.00+ - GET ACTIVE OPTIONS
  630.     AX = D001h
  631. Return: AX = FFFFh if supported
  632.         BX = currently active options (see #00222)
  633. SeeAlso: AX=D000h"S3VBE",AX=D002h"S3VBE"
  634.  
  635. Bitfields for S3VBE options:
  636. Bit(s)    Description    (Table 00222)
  637.  0    VESA VBE v2.0 extensions enabled
  638.  1    linear frame buffer enabled
  639.  2    low-resolution video mode support enabled
  640.  8    never clear video memory during VBE mode set (v3.10+)
  641. ---debug options---
  642.  12    report VBE version 1.2 (v3.10+)
  643.  13    always fail AX=4F0Ah (v3.10+)
  644.  14    don't copy video mode list (v3.12+)
  645. SeeAlso: #00216
  646. --------V-10D002-----------------------------
  647. INT 10 - S3VBE/Core2.0 v3.00+ - SET ACTIVE OPTIONS
  648.     AX = D002h
  649.     BX = new active options (see #00222)
  650. Return: AX = FFFFh if supported
  651. SeeAlso: AX=D000h"S3VBE",AX=D001h"S3VBE"
  652. --------V-10D003-----------------------------
  653. INT 10 U - S3VBE/Core2.0 v3.10+ - GET VBE/Core CAPABILITIES
  654.     AX = D003h
  655. Return: AX = FFFFh if supported
  656.         BX = capabilities
  657.         bit 0: SpeedUp = activate/deactivate linear addressing at
  658.             A0000h for VBE functions 04h/05h
  659. SeeAlso: AX=D000h"S3VBE",AX=D001h"S3VBE",AX=D004h"S3VBE",AX=D005h"S3VBE"
  660. --------V-10D004-----------------------------
  661. INT 10 U - S3VBE/Core2.0 v3.10+ - ACTIVATE SPEED-UP
  662.     AX = D004h
  663. Return: AX = FFFFh if supported
  664.     BX = status
  665.         0000h SpeedUp activated
  666.         0001h SpeedUp not possible (wrong memory organization for mode)
  667.         0002h SpeedUp not possible (linear frame buffer active)
  668. Note:    called by S3 SpeedUp (see AX=C000h)
  669. SeeAlso: AX=C000h"SpeedUp",AX=D000h"S3VBE",AX=D003h"S3VBE",AX=D005h"S3VBE"
  670. --------V-10D005-----------------------------
  671. INT 10 U - S3VBE/Core2.0 v3.10+ - DEACTIVATE SPEED-UP
  672.     AX = D005h
  673. Return: AX = FFFFh if supported
  674.     BX = status
  675.         0000h SpeedUp deactivated
  676.         0001h SpeedUp not possible (wrong memory organization for mode)
  677.         0002h SpeedUp not possible (linear frame buffer active)
  678. Notes:    called by S3 SpeedUp (see AX=C000h)
  679.     functions 06h-FFh (e.g. AX=D006h-D0FFh) are considered reserved by
  680.       v3.10+ and return AX=5555h
  681. SeeAlso: AX=C000h"SpeedUp",AX=D000h"S3VBE",AX=D003h"S3VBE",AX=D004h"S3VBE"
  682. --------V-10D1-------------------------------
  683. INT 10 U - VIDEO - HP 100LX/200LX - INTERNAL - ???
  684.     AH = D1h
  685.     AL = 01h
  686. Return: ???
  687. Note:    called by AH=D0h
  688. SeeAlso: AH=D0h,AH=D4h
  689. --------V-10D4-------------------------------
  690. INT 10 U - VIDEO - HP 100LX/200LX - INTERNAL - ???
  691.     AH = D4h
  692.     AL = 29h
  693. Return: ???
  694. Note:    called by AH=D0h
  695. SeeAlso: AH=D0h,AH=D1h
  696. --------V-10D5-------------------------------
  697. INT 10 - Netroom SCRNCLK - ???
  698.     AH = D5h
  699.     ???
  700. Return: ???
  701. Program: SCRNCLK is a "cloaked" screen accelerator included with Netroom
  702. --------t-10DAAD-----------------------------
  703. INT 10 - TSRUNIT v1.10 - INSTALLATION CHECK
  704.     AX = DAADh
  705.     BX = check signature (different for each TSR)
  706.     CX = 0000h
  707. Return: CX = return signature (nonzero) if installed
  708.         ES = program segment prefix
  709. Program: TSRUNIT is a Turbo Pascal unit for creating TSRs by Nir Sofer
  710. --------V-10DFA5-----------------------------
  711. INT 10 U - VIDEO - Compaq ADAPT.COM - GET ??? DATA AREA
  712.     AX = DFA5h
  713. Return: AX = BDBFh if supported
  714.         ES:DI -> ??? data area
  715.         BX = ES
  716. SeeAlso: AX=BFA0h
  717. --------V-10EE-------------------------------
  718. INT 10 - VIDEO - IBM "Private" Function
  719.     AH = EEh
  720. SeeAlso: INT 13/AH=FFh"IBM"
  721. --------V-10EF-------------------------------
  722. INT 10 - VIDEO - MSHERC.COM - GET VIDEO ADAPTER TYPE AND MODE
  723.     AH = EFh
  724. Return: DL = video adapter type
  725.         00h original Hercules
  726.         01h Hercules Plus     (port 03BAh reads x001xxxxx)
  727.         02h Hercules InColor (port 03BAh reads x101xxxxx)
  728.         FFh not a Hercules-compatible card (port 03BAh bit 7 not pulsing)
  729.     DH = memory mode byte
  730.         00h "half" mode
  731.         01h "full" mode
  732.         FFh not a Hercules-compatible card
  733. Program: MSHERC.COM/QBHERC.COM is a support program for the Microsoft Quick
  734.       languages which makes their graphics libraries compatible with a
  735.       Hercules card by adding video modes 08h and 88h, and supporting
  736.       text in the new graphics modes.
  737. Notes:    while in mode 08h or 88h, INT 10 supports the Hercules card much like
  738.       a CGA.
  739.     MSHERC performs an installation check by setting DL=FFh and testing
  740.       whether it has been changed on return, which causes it to reinstall
  741.       itself when no HGC is present (or HGC emulation has temporarily been
  742.       disabled); a better installation check would be to use DX=80FFh and
  743.       check whether DX has been changed
  744.     reportedly returns DH=00h on some not-entirely-Hercules-compatible
  745.       cards
  746. Index:    installation check;MSHERC
  747. --------V-10F0-------------------------------
  748. INT 10 - EGA Register Interface Library - READ ONE REGISTER
  749.     AH = F0h
  750.     BL = register number
  751.     BH = 00h
  752.     DX = group index (see #00223)
  753. Return: BL = data
  754. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  755.       compatibility box, and others; it is used for software virtualization
  756.       of write-only registers on an EGA video adapter, so that multiple
  757.       programs may peacefully coexist without clobbering each other's
  758.       display settings
  759. SeeAlso: AH=F1h"EGA",AH=F2h"EGA",AH=FAh"EGA",INT 2F/AX=BC00h
  760.  
  761. (Table 00223)
  762. Values for group index:
  763.  Pointer/data chips
  764.  00h    CRT Controller (25 reg) 3B4h mono modes, 3D4h color modes
  765.  08h    Sequencer (5 registers) 3C4h
  766.  10h    Graphics Controller (9 registers) 3CEh
  767.  18h    Attribute Controller (20 registers) 3C0h
  768.  Single registers
  769.  20h    Miscellaneous Output register 3C2h
  770.  28h    Feature Control register (3BAh mono modes, 3DAh color modes)
  771.  30h    Graphics 1 Position register 3CCh
  772.  38h    Graphics 2 Position register 3CAh
  773. --------V-10F0-------------------------------
  774. INT 10 - VHRBIOS.SYS - INSTALLATION CHECK
  775.     AH = F0h
  776. Return: BX = 4F4Bh ('OK')
  777. Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius"
  778.       black&white A4/portrait monitor
  779. SeeAlso: AH=F1h"VHRBIOS.SYS",AH=F2h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS"
  780. SeeAlso: AH=96h"VHRBIOS.SYS"
  781. --------V-10F1-------------------------------
  782. INT 10 - EGA Register Interface Library - WRITE ONE REGISTER
  783.     AH = F1h
  784.     DX = group index (see #00223)
  785.         if single register:
  786.         BL = value to write
  787.         otherwise
  788.         BL = register number
  789.         BH = value to write
  790. Return: BL = data
  791. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  792.       compatibility box, and others
  793. SeeAlso: AX=7F05h,AH=F0h"EGA",AH=F3h"EGA",AH=FAh"EGA"
  794. --------V-10F1-------------------------------
  795. INT 10 - VHRBIOS.SYS - SET REVERSE VIDEO
  796.     AH = F1h
  797.     AL = new video state 
  798.         (bit 5 set for black text on white, clear for white on black)
  799. Return: ???
  800. Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius"
  801.       black&white A4/portrait monitor
  802. SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F3h"VHRBIOS.SYS"
  803. --------V-10F2-------------------------------
  804. INT 10 - EGA Register Interface Library - READ REGISTER RANGE
  805.     AH = F2h
  806.     CH = starting register number
  807.     CL = number of registers (>1)
  808.     DX = group index (00h,08h,10h,18h) (see #00223)
  809.     ES:BX -> buffer, CL bytes
  810. Return: nothing
  811. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  812.       compatibility box, and others
  813. SeeAlso: AH=F0h"EGA",AH=F3h"EGA",AH=FAh"EGA"
  814. --------V-10F2-------------------------------
  815. INT 10 - VHRBIOS.SYS - ???
  816.     AH = F2h
  817. Return: ???
  818. Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius"
  819.       black&white A4/portrait monitor
  820. SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS"
  821. --------V-10F3-------------------------------
  822. INT 10 - EGA Register Interface Library - WRITE REGISTER RANGE
  823.     AH = F3h
  824.     CH = starting register
  825.     CL = number of registers (>1)
  826.     DX = group index (00h,08h,10h,18h) (see #00223)
  827.     ES:BX -> buffer, CL bytes
  828. Return: nothing
  829. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  830.       compatibility box, and others
  831. SeeAlso: AX=7F05h,AH=F1h"EGA",AH=F2h"EGA",AH=F4h"EGA"
  832. --------V-10F3-------------------------------
  833. INT 10 - VHRBIOS.SYS - SWITCH BETWEEN DUAL MONITORS???
  834.     AH = F3h
  835. Return: ???
  836. Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius"
  837.       black&white A4/portrait monitor
  838. SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS",AH=F6h"VHRBIOS.SYS"
  839. --------V-10F4-------------------------------
  840. INT 10 - EGA Register Interface Library - READ REGISTER SET
  841.     AH = F4h
  842.     CX = number of registers to read (>1)
  843.     ES:BX -> table of register records (see #00224)
  844. Return: register values in table filled in
  845. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  846.       compatibility box, and others
  847. SeeAlso: AH=F0h"EGA",AH=F2h"EGA",AH=F5h"EGA"
  848.  
  849. Format of EGA RIL entries in table of register records:
  850. Offset    Size    Description    (Table 00224)
  851.  00h    WORD    group index
  852.         Pointer/data chips
  853.            00h CRTC (3B4h mono modes, 3D4h color modes)
  854.            08h Sequencer 3C4h
  855.            10h Graphics Controller 3CEh
  856.            18h Attribute Controller 3C0h
  857.         Single registers
  858.            20h Miscellaneous Output register 3C2h
  859.            28h Feature Control register (3BAh mono modes, 3DAh color)
  860.            30h Graphics 1 Position register 3CCh
  861.            38h Graphics 2 Position register 3CAh
  862.  02h    BYTE    register number (0 for single registers)
  863.  03h    BYTE    register value
  864. --------V-10F4-------------------------------
  865. INT 10 - VHRBIOS.SYS - GET VERSION
  866.     AH = F4h
  867. Return: AX = driver version (AH = major, AL = minor)
  868. Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius"
  869.       black&white A4/portrait monitor
  870. SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F5h"VHRBIOS.SYS"
  871. --------V-10F5-------------------------------
  872. INT 10 - EGA Register Interface Library - WRITE REGISTER SET
  873.     AH = F5h
  874.     CX = number of registers to write (>1)
  875.     ES:BX -> table of records (see #00224)
  876. Return: nothing
  877. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  878.       compatibility box, and others
  879. SeeAlso: AX=7F05h,AH=F1h"EGA",AH=F3h"EGA",AH=F4h"EGA"
  880. --------V-10F5-------------------------------
  881. INT 10 - VHRBIOS.SYS - GET VENDOR ID
  882.     AH = F5h
  883. Return: AXBX = vendor ID (4D44h:5349h = 'MDSI' for Micro Display Systems Inc.)
  884. Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius"
  885.       black&white A4/portrait monitor
  886. SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS",AH=F6h"VHRBIOS.SYS"
  887. --------V-10F6-------------------------------
  888. INT 10 - EGA Register Interface Library - REVERT TO DEFAULT REGISTERS
  889.     AH = F6h
  890. Return: nothing
  891. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  892.       others
  893. SeeAlso: AH=F5h"EGA",AH=F7h"EGA"
  894. --------V-10F6-------------------------------
  895. INT 10 - VHRBIOS.SYS - GET INFO
  896.     AH = F6h
  897.     AL = what to get
  898.         00h device driver state
  899.         Return: AX = device driver state
  900.         01h video mode info
  901.         Return: AL = video mode
  902.             DH = screen height in rows
  903.             DL = screen width in columns
  904. Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius"
  905.       black&white A4/portrait monitor
  906. SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS",AH=96h"VHRBIOS.SYS
  907. --------V-10F7-------------------------------
  908. INT 10 - EGA Register Interface Library - DEFINE DEFAULT REGISTER TABLE
  909.     AH = F7h
  910.     DX = port number
  911.        Pointer/data chips
  912.           00h CRTC (3B4h mono modes, 3D4h color modes)
  913.           08h Sequencer 3C4h
  914.           10h Graphics Controller 3CEh
  915.           18h Attribute Controller 3C0h
  916.        Single registers
  917.           20h Miscellaneous Output register 3C2h
  918.           28h Feature Control register (3BAh mono modes, 3DAh color modes)
  919.           30h Graphics 1 Position register 3CCh
  920.           38h Graphics 2 Position register 3CAh
  921.     ES:BX -> table of one-byte entries, one byte to be written to each
  922.          register
  923. Return: nothing
  924. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  925.       compatibility box, and others
  926. SeeAlso: AH=F0h"EGA",AH=F6h"EGA"
  927. --------V-10FA--BX0000-----------------------
  928. INT 10 - EGA Register Interface Library - INTERROGATE DRIVER
  929.     AH = FAh
  930.     BX = 0000h
  931. Return: BX = 0000h if RIL driver not present
  932.     ES:BX -> EGA Register Interface version number, if present:
  933.         byte 0 = major release number
  934.         byte 1 = minor release number
  935. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  936.       compatibility box, and others
  937. SeeAlso: AH=F0h"EGA",AH=F6h"EGA",INT 2F/AX=BC00h
  938. --------K-10FA-------------------------------
  939. INT 10 - FASTBUFF.COM - INSTALLATION CHECK
  940.     AH = FAh
  941. Return: AX = 00FAh if installed
  942.         ES = segment of resident code
  943. Program: FASTBUFF.COM is a keyboard speedup/screen blanking utility by David
  944.       Steiner
  945. Index:    screen saver;FASTBUFF
  946. --------V-10FE-------------------------------
  947. INT 10 - TopView - GET SHADOW BUFFER
  948.     AH = FEh
  949.     ES:DI -> assumed video buffer
  950.         B800h:0000h color text/CGA graphics, B000h:0000h mono text,
  951.           or A000h:0000h EGA/VGA graphics (RSIS environments only)
  952. Return: ES:DI -> actual video buffer for calling process
  953. Desc:    Determine the address of the virtual screen to which the program
  954.       should write instead of the actual video memory; this permits
  955.       programs to be multitasked without interfering with each other's
  956.       output, and allows memory managers to move the video memory to
  957.       permit larger programs to be loaded.
  958. Notes:    if no multitasker or RSIS-compliant environment is installed, ES:DI is
  959.       returned unchanged; RSIS is the Relocated Screen Interface
  960.       Specification
  961.     for display pages other than 0, use AH=05h and AH=0Fh to determine
  962.       whether a particular page exists
  963.     TopView requires a call to AH=FFh to notify it that the screen has
  964.       changed; DESQview will check for changes itself until the first call
  965.       to AH=FFh
  966. SeeAlso: AH=05h,AX=5201h,AH=FFh,INT 15/AX=1024h,INT 21/AH=2Bh"DESQview"
  967. SeeAlso: INT 21/AH=ECh"DoubleDOS"
  968. --------V-10FF-------------------------------
  969. INT 10 - TopView - UPDATE SCREEN FROM SHADOW BUFFER
  970.     AH = FFh
  971.     CX = number of consecutive changed characters
  972.     ES:DI -> first changed character in shadow buffer
  973. Return: nothing
  974. Notes:    avoid CX=0000h
  975.     DESQview will discontinue the automatic screen updating initiated by
  976.       AH=FEh after this call
  977.     not supported (ignored) by DESQview/X 1.0x
  978. SeeAlso: AH=93h,AH=FEh
  979. --------E-10FF-------------------------------
  980. INT 10 - DJ GO32.EXE 80386+ DOS extender - VIDEO EXTENSIONS
  981.     AH = FFh
  982.     AL = video mode (see #00225)
  983. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  984.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  985. SeeAlso: AH=00h,INT 21/AH=FFh"GO32"
  986.  
  987. (Table 00225)
  988. Values for GO32 video mode number:
  989.  00h    80x25 text
  990.  01h    default text
  991.  02h    CXxDX text
  992.  03h    biggest text
  993.  04h    320x200 graphics
  994.  05h    default graphics
  995.  06h    CXxDX graphics
  996.  07h    biggest non-interlaced graphics
  997.  08h    biggest graphics
  998. Index:    video modes;GO32
  999. --------V-10FF-------------------------------
  1000. INT 10 - VIDEO - Oak VGA BIOS v1.02+ - SET EMULATION
  1001.     AH = FFh
  1002.     AL = emulation
  1003.         43h ('C') CGA emulation
  1004.         45h ('E') EGA emulation
  1005.         4Dh ('M') Hercules emulation
  1006.         56h ('V') VGA emulation
  1007.     ES:DI -> signature string "Calamity"
  1008. Return: VGA switched to suggested mode
  1009. SeeAlso: AH=00h,AX=007Fh/BH=00h,AX=007Fh/BH=02h,AX=5F01h
  1010. --------R-10FF00-----------------------------
  1011. INT 10 - CARBON COPY PLUS v5.0 - CHECK IF CC CONNECTED TO CCHELP
  1012.     AX = FF00h
  1013. Return: BL = state
  1014.         00h not connected
  1015.         01h connected
  1016. SeeAlso: AX=FF01h,AX=FF02h
  1017. --------R-10FF01-----------------------------
  1018. INT 10 - CARBON COPY PLUS v5.0 - DISCONNECT AND RESET LINE
  1019.     AX = FF01h
  1020. Return: nothing
  1021. SeeAlso: AX=FF00h,AX=FF02h
  1022. --------R-10FF02-----------------------------
  1023. INT 10 - CARBON COPY PLUS v5.0 - GET LAST PHONE NUMBER DIALED
  1024.     AX = FF02h
  1025. Return: ES:DI -> ASCIZ phone number
  1026. SeeAlso: AX=FF00h,AX=FF01h
  1027. --------C-11---------------------------------
  1028. INT 11 - CPU-generated (80486+) - ALIGNMENT CHECK
  1029. Desc:    automatically generated by the CPU when the AC flag is set, the current
  1030.       privilege level is 3, and a misaligned memory access (WORD not on an
  1031.       even address or DWORD not on a multiple of 4) is made
  1032. Note:    not all V86 monitors allow the AC flag to be set, such as Turbo
  1033.       Debugger 386
  1034. SeeAlso: INT 12"CPU"
  1035. --------B-11---------------------------------
  1036. INT 11 - BIOS - GET EQUIPMENT LIST
  1037. Return: (E)AX = BIOS equipment list word (see #00226,#03215 at INT 4B"Tandy")
  1038. Note:    since older BIOSes do not know of the existence of EAX, the high word
  1039.       of EAX should be cleared before this call if any of the high bits
  1040.       will be tested
  1041. SeeAlso: INT 4B"Tandy 2000",MEM 0040h:0010h
  1042.  
  1043. Bitfields for BIOS equipment list:
  1044. Bit(s)    Description    (Table 00226)
  1045.  0    floppy disk(s) installed (number specified by bits 7-6)
  1046.  1    80x87 coprocessor installed
  1047.  3-2    number of 16K banks of RAM on motherboard (PC only)
  1048.     number of 64K banks of RAM on motherboard (XT only)
  1049.  2    pointing device installed (PS)
  1050.  3    unused (PS)
  1051.  5-4    initial video mode
  1052.     00 EGA, VGA, or PGA
  1053.     01 40x25 color
  1054.     10 80x25 color
  1055.     11 80x25 monochrome
  1056.  7-6    number of floppies installed less 1 (if bit 0 set)
  1057.  8    DMA support installed (PCjr, Tandy 1400LT)
  1058.     DMA support *not* installed (Tandy 1000's)
  1059.  11-9    number of serial ports installed
  1060.  12    game port installed
  1061.  13    serial printer attached (PCjr)
  1062.     internal modem installed (PC/Convertible)
  1063.  15-14    number of parallel ports installed
  1064. ---Compaq, Dell, and many other 386/486 machines--
  1065.  23    page tables set so that Weitek coprocessor addressable in real mode
  1066.  24    Weitek math coprocessor present
  1067. ---Compaq Systempro---
  1068.  25    internal DMA parallel port available
  1069.  26    IRQ for internal DMA parallel port (if bit 25 set)
  1070.     0 = IRQ5
  1071.     1 = IRQ7
  1072.  28-27    parallel port DMA channel
  1073.     00 DMA channel 0
  1074.     01 DMA channel 0 ???
  1075.     10 reserved
  1076.     11 DMA channel 3
  1077. BUG:    Award BIOS v4.50G and v4.51PG erroneously set bit 0 even if there are
  1078.       no floppy drives installed; use two calls to INT 13/AH=15h to
  1079.       determine whether any floppies are actually installed
  1080. SeeAlso: INT 12"BIOS",#03215 at INT 4B"Tandy 2000"
  1081. --------d-11----SI6A6A-----------------------
  1082. INT 11 - Columbia Data Products Standard Device Level Protocol (SDLP) 1.6
  1083.     SI = 6A6Ah
  1084.     AH = command (see #00227)
  1085.     AL = SCSI Addressing (see #00228)
  1086. Return: CF clear if successful
  1087.         DI = 6A6Ah if AH=01h on entry (maybe for all functions???)
  1088.         AH = ??? for command 01h
  1089.     CF set on error
  1090.         AL = error code
  1091. SeeAlso: INT 21/AX=4402h"ASPI"
  1092.  
  1093. (Table 00227)
  1094. Values for SDLP command:
  1095.  00h    SDLP initialization
  1096.  01h    SDLP System Identify
  1097.  02h    simple read sectors
  1098.  03h    simple write sectors
  1099.  04h    simple verify sectors/seek to sector
  1100.  05h    get device size/type
  1101.  06h    ready unit
  1102.  07h    format unit
  1103.  08h    diagnostics
  1104.  09h    rewind
  1105.  0Ah    erase
  1106.  0Bh    write filemarks
  1107.  0Ch    space
  1108.  0Dh    prevent/allow media removal
  1109.  0Eh    load/unload media
  1110.  0Fh    reserved - returns good status
  1111.  10h    set block size
  1112.  11h    write setmark
  1113.  12h    set error level
  1114.  13h    get address of Request Sense Buffer
  1115.  14h    get SDLP error via Request Sense
  1116.  F0h    Vendor Unique Function (WD7000-FASST2 only)
  1117.  FDh    reset current SCSI HAC
  1118.  FEh    get/set current SCSI HAC
  1119.  FFh    execute SCSI command
  1120.  
  1121. Bitfields for SDLP SCSI addressing:
  1122. Bit(s)    Description    (Table 00228)
  1123.  7-6    Host Adapter
  1124.  5-3    SCSI Target ID
  1125.  2-0    SCSI Target LUN (logical unit number)
  1126. --------V-110225BX6900-----------------------
  1127. INT 11 - Blank-It Screen Blanker - INSTALLATION CHECK
  1128.     AX = 0225h
  1129.     BX = 6900h
  1130. Return: BL = 23h
  1131.     ES:DI -> ASCIZ "BLNKIT"
  1132. Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
  1133.       Inc.
  1134. SeeAlso: AX=0225h/BX=6902h,AX=0225h/BX=6908h,AX=0225h/BX=6909h,INT 14/AX=AA01h
  1135. Index:    screen saver;Blank-It
  1136. --------V-110225BX6901-----------------------
  1137. INT 11 - Blank-It Screen Blanker - SET TIMEOUT FOR SCREEN BLANKING
  1138.     AX = 0225h
  1139.     BX = 6901h
  1140.     CX = timeout in timer ticks (18.2/second) or 0000h to disable timeout
  1141.          largest value is 59 minutes (FBACh or 64428)
  1142. Return: CF clear if successful
  1143.         DI = 6A6Ah (possibly also 6A6Ah for all following functions)
  1144.         AH = ???
  1145.     CF set on error
  1146.         AL = error code
  1147. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6904h
  1148. Index:    screen saver;Blank-It
  1149. --------V-110225BX6902-----------------------
  1150. INT 11 - Blank-It Screen Blanker - ENABLE THE SOFTWARE
  1151.     AX = 0225h
  1152.     BX = 6902h
  1153. Return: CF clear if successful
  1154.     CF set on error
  1155.         AL = error code
  1156. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6903h
  1157. Index:    screen saver;Blank-It
  1158. --------V-110225BX6903-----------------------
  1159. INT 11 - Blank-It Screen Blanker - DISABLE THE SOFTWARE
  1160.     AX = 0225h
  1161.     BX = 6903h
  1162. Return: CF clear if successful
  1163.     CF set on error
  1164.         AL = error code
  1165. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6902h
  1166. Index:    screen saver;Blank-It
  1167. --------V-110225BX6904-----------------------
  1168. INT 11 - Blank-It Screen Blanker - GET BLANKING TIMEOUT
  1169.     AX = 0225h
  1170.     BX = 6904h
  1171. Return: CF clear if successful
  1172.         BX = timeout (see AX=0225h/BX=6901h)
  1173.     CF set on error
  1174.         AL = error code
  1175. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6901h
  1176. Index:    screen saver;Blank-It
  1177. --------V-110225BX6905-----------------------
  1178. INT 11 - Blank-It Screen Blanker - ENABLE WINDOWS COMPATIBILITY MODE
  1179.     AX = 0225h
  1180.     BX = 6905h
  1181. Return: CF clear if successful
  1182.     CF set on error
  1183.         AL = error code
  1184. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6906h
  1185. Index:    screen saver;Blank-It
  1186. --------V-110225BX6906-----------------------
  1187. INT 11 - Blank-It Screen Blanker - DISABLE WINDOWS COMPATIBILITY MODE
  1188.     AX = 0225h
  1189.     BX = 6906h
  1190. Return: CF clear if successful
  1191.     CF set on error
  1192.         AL = error code
  1193. Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
  1194.       Inc.
  1195. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6905h
  1196. Index:    screen saver;Blank-It
  1197. --------V-110225BX6907-----------------------
  1198. INT 11 - Blank-It Screen Blanker - UNBLANK THE SCREEN
  1199.     AX = 0225h
  1200.     BX = 6907h
  1201. Return: CF clear if successful
  1202.     CF set on error
  1203.         AL = error code
  1204. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6908h
  1205. Index:    screen saver;Blank-It
  1206. --------V-110225BX6908-----------------------
  1207. INT 11 - Blank-It Screen Blanker - BLANK THE SCREEN
  1208.     AX = 0225h
  1209.     BX = 6908h
  1210. Return: CF clear if successful
  1211.     CF set on error
  1212.         AL = error code
  1213. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6907h
  1214. Index:    screen saver;Blank-It
  1215. --------V-110225BX6909-----------------------
  1216. INT 11 - Blank-It Screen Blanker - SET HOTKEY FOR MANUAL BLANKING
  1217.     AX = 0225h
  1218.     BX = 6909h
  1219.     CL = key scan code (see #00229)
  1220. Return: CF clear if successful
  1221.     CF set on error
  1222.         AL = error code
  1223. Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
  1224.       Inc.
  1225. SeeAlso: AX=0225h/BX=6900h
  1226. Index:    screen saver;Blank-It|hotkeys;Blank-It
  1227.  
  1228. (Table 00229)
  1229. Values for Blank-It hotkey scan code:
  1230.  00h    No hot key
  1231.  1Dh    Left CTRL
  1232.  2Ah    Left Shift
  1233.  36h    Right Shift
  1234.  57h    F11
  1235.  58h    F12
  1236. SeeAlso: #00006
  1237. --------G-1105D7-----------------------------
  1238. INT 11 CU - Borland C++ IDE - INSTALLED CALLOUT
  1239.     AX = 05D7h
  1240.     BX = product ID (0088h)
  1241. Note:    called by the BC++ IDE when an application calls
  1242.       INT 12/AX=05D7h/BX=05D7h
  1243. SeeAlso: INT 12/AX=05D7h/BX=05D7h
  1244. Index:    installation check;Borland C++ IDE
  1245. --------F-1177-------------------------------
  1246. INT 11 - RainbowFAX v1.3 - SFENGINE API - OPERATIONAL CONTROL
  1247.     AH = 77h
  1248.     AL = subfunction
  1249.         01h request SFENGINE start
  1250.         Return: AX = 0001h
  1251.         02h check if SFENGINE started
  1252.         Return: AX = 0000h or 0001h
  1253.         03h request SFENGINE stop
  1254.         Return: AX = 0001h
  1255.         04h check if SFENGINE stopped
  1256.         Return: AX = 0000h or 0001h
  1257.         05h installation check
  1258.         Return: AX = 0001h
  1259.         06h uninstall???
  1260.         BX:DX -> return address for successful uninstall???
  1261.         Return: (at caller's address)
  1262.             AX = 0000h
  1263.         else
  1264.         Return: AX = FFFFh (invalid subfunction)
  1265. Return: ES:DX -> ASCIZ signature string "SFAX ENGINE V1.0"
  1266.         followed by internal data area???
  1267. SeeAlso: AH=78h,AH=79h,AH=7Ah,AH=7Ch
  1268. Index:    installation check;RainbowFAX|installation check;SFENGINE
  1269. Index:    uninstall;RainbowFAX|uninstall;SFENGINE
  1270. --------F-1178-------------------------------
  1271. INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
  1272.     AH = 78h
  1273.     AL = subfunction
  1274.         01h set ???
  1275.         BX = new state for ???
  1276.             0000h ???
  1277.             else ???
  1278.         Return: AX = 0001h
  1279.         02h set ???
  1280.         BX = ???
  1281.         CX = ???
  1282.         Return: AX = 0001h
  1283.         03h set ???
  1284.         BX = new state for ???
  1285.             0000h ???
  1286.             else ???
  1287.         Return: AX = 0001h
  1288.         else
  1289.         Return: AX = FFFFh (invalid subfunction)
  1290. SeeAlso: AH=77h,AH=79h,AH=7Ah,AH=7Ch
  1291. --------F-1179-------------------------------
  1292. INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
  1293.     AH = 79h
  1294.     AL = subfunction
  1295.         01h set ??? flag
  1296.         Return: AX = previous state (0000h already set, 0001h clear)
  1297.         02h clear ??? flag (refer to subfunc 01h)
  1298.         Return: AX = 0001h
  1299.         03h set ??? flag (different from subfn 02h or 04h)
  1300.         Return: AX = 0001h
  1301.         04h clear ??? flag (different from subfn 02h or 03h)
  1302.         Return: AX = 0001h
  1303.         else
  1304.         Return: AX = FFFFh (invalid subfunction)
  1305. SeeAlso: AH=77h,AH=78h,AH=7Ah,AH=7Ch
  1306. --------F-117A-------------------------------
  1307. INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
  1308.     AH = 7Ah
  1309.     AL = subfunction
  1310.         01h set ??? flag
  1311.         Return: AX = previous state (0000h already set, 0001h clear)
  1312.         02h clear ??? flag
  1313.         Return: AX = 0001h
  1314.         03h set ??? flag (different from subfn 02h)
  1315.         Return: AX = 0001h
  1316.         else
  1317.         Return: AX = FFFFh (invalid subfunction)
  1318. SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ch
  1319. --------F-117C01-----------------------------
  1320. INT 11 - RainbowFAX v1.3 - SFENGINE API - SET ??? FLAG
  1321.     AX = 7C01h
  1322. Return: AX = 0001h
  1323. SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ah,AX=7C02h,AX=7C03h
  1324. --------F-117C02-----------------------------
  1325. INT 11 - RainbowFAX v1.3 - SFENGINE API - CLEAR ??? FLAG
  1326.     AX = 7C02h
  1327. Return: AX = 0001h
  1328. SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ah,AX=7C01h,AX=7C03h
  1329. --------F-117C03-----------------------------
  1330. INT 11 - RainbowFAX v1.3 - SFENGINE API - UNSUPPORTED FUNCTIONS
  1331.     AX = 7C03h-7CFFh
  1332. Return: AX = FFFFh
  1333. SeeAlso: AH=77h,AX=7C01h,AX=7C02h
  1334. --------S-11BC--DX1954-----------------------
  1335. INT 11 - BNU FOSSIL - INSTALLATION CHECK
  1336.     AH = BCh
  1337.     DX = 1954h
  1338. Return: AX = 1954h
  1339.     ES:DX -> entry point of driver (instead of INT 14)
  1340. SeeAlso: INT 14/AH=04h"FOSSIL"
  1341. --------d-11FF--SI6A6A-----------------------
  1342. INT 11 - WD7000 SDLP interface - EXECUTE GENERIC SCSI COMMAND
  1343.     AH = FFh
  1344.     SI = 6A6Ah
  1345.     AL = SCSI Addressing (see #00230)
  1346.     CX = bytes of data to be transmitted (max FFF0h)
  1347.     DH = 00h
  1348.     DL = length of SCSI Command Descriptor Block
  1349.     DS:DI -> SCSI Command Descriptor Block
  1350.     ES:BX -> data buffer
  1351. Return: CF set on error
  1352.         AL = error code
  1353.     CF clear if successful
  1354. Note:    because of busmaster operations with WD7000FASST avoid accessing
  1355.       video memory directly; check 386 memory manager for VDS support.
  1356.       The WD7000XTAT works with programmed IO and does not have this
  1357.       limitation.
  1358. SeeAlso: INT 21/AX=4402h"ASPI",INT 2F/AX=7F01h
  1359.  
  1360. Bitfields for SDLP SCSI addressing:
  1361. Bit(s)    Description    (Table 00230)
  1362.  2-0    SCSI Target LUN (logical unit number)
  1363.  5-3    SCSI Target ID
  1364.  7    write flag, set for write operations, clear otherwise
  1365. --------T-11FFFECXFFFE-----------------------
  1366. INT 11 - BACK&FORTH (before v1.62) API
  1367.     AX = FFFEh
  1368.     CX = FFFEh
  1369.     BX = function
  1370.         00h installation check
  1371.         Return: AX = installation state
  1372.                 0001h BNFHIGH and BNFLOW both loaded
  1373.                 0003h only BNFHIGH loaded
  1374.                 else neither loaded
  1375.         01h ???
  1376.         Return: DX:AX -> ???
  1377.         02h ???
  1378.         03h ???
  1379.         04h ???
  1380.         05h ??? switches current PSP segment and stack if BNFLOW has not
  1381.             yet announced itself installed
  1382.         06h ???
  1383.         Return: AX = ???
  1384. SeeAlso: INT 12/AX=FFFEh
  1385. Index:    installation check;BACK&FORTH
  1386. --------B-12---------------------------------
  1387. INT 12 - BIOS - GET MEMORY SIZE
  1388. Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
  1389. Note:    this call returns the contents of the word at 0040h:0013h; in PC and
  1390.       XT, this value is set from the switches on the motherboard
  1391. SeeAlso: INT 11"BIOS",INT 2F/AX=4A06h,INT 4C"Tandy 2000",MEM 0040h:0013h
  1392. --------C-12---------------------------------
  1393. INT 12 - CPU-generated (Pentium) - MACHINE CHECK EXCEPTION
  1394. Notes:    Intel documents this interrupt as CPU model-dependent; for current
  1395.       Pentium processors, the reason for the machine check exception may
  1396.       be read from model-specific registers 00h and 01h (described, for
  1397.       example, in Christian Ludloff's 4P package)
  1398.     this exception is enabled by bit 6 of CR4
  1399. SeeAlso: INT 11"CPU",MSR 00000000h,MSR 00000001h
  1400. --------K-12----CX1806-----------------------
  1401. INT 12 - KEYBUI v2.0+ - INSTALLATION CHECK
  1402.     CX = 1806h
  1403. Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
  1404.     CX = 1960h if installed
  1405. Program: KEYBUI is a resident keyboard driver by Johan Zwiekhorst which allows
  1406.       accented characters and box drawing on standard QWERTY keyboards; it
  1407.       also provides break-to-DOS and screen blanking capabilities
  1408. SeeAlso: INT 14/AX=AA01h
  1409. Index:    screen saver;KEYBUI
  1410. --------d-12----CX1807-----------------------
  1411. INT 12 - PARKER v2.0+ - INSTALLATION CHECK
  1412.     CX = 1807h
  1413. Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
  1414.     CX = 1961h if installed
  1415. Program: PARKER is an optionally-resident hard disk parking program by Johan
  1416.       Zwiekhorst
  1417. --------G-1205D7BX05D7-----------------------
  1418. INT 12 U - Borland C++ IDE - INSTALLATION CHECK
  1419.     AX = 05D7h (1495d)
  1420.     BX = 05D7h
  1421. Note:    the BC++ IDE will call INT 11/AX=05D7h/BX=0088h if it is loaded
  1422. SeeAlso: INT 11/AX=05D7h
  1423. --------v-124350BX4920-----------------------
  1424. INT 12 C - CPI-standard virus - "FRIEND" CHECK
  1425.     AX = 4350h
  1426.     BX = 4920h
  1427.     CX = AB46h
  1428.     DX = 554Eh
  1429. Return: if friendly (not to be infected)
  1430.         CX:DX -> ASCIZ identity code (changes yearly)
  1431. SeeAlso: INT 13/AX=EC00h"VIRUS",INT 13/AX=5001h,INT 21/AX=0B56h
  1432. --------T-12FFFECXFFFE-----------------------
  1433. INT 12 - Back&Forth v1.62+ - API
  1434.     AX = FFFEh
  1435.     CX = FFFEh
  1436.     BX = function
  1437.         00h installation check
  1438.         Return: AX = 0001h installed
  1439.                  else  not loaded
  1440.         01h (reserved)
  1441.         02h build program ID list (shareware Back&Forth)
  1442.         ES:DI -> buffer of at least 100 bytes, to be filled with words
  1443.         Return: AX = number of programs defined
  1444.             ES:DI buffer filled with AX words
  1445.         02h get memory statistics (Back&Forth Professional)
  1446.         Return: AX = available swap memory, KBytes
  1447.             BX = maximum task size, KBytes
  1448.             DX = fixed overhead per task, excluding video/macro
  1449.                   storage
  1450.         03h switch to specified task (task need not be open yet)
  1451.         DX = two-letter program ID
  1452.         Return: AX = status
  1453.                 0000h if task undefined
  1454.                 0001h task switch will occur when safe
  1455.         04h (reserved)
  1456.         05h (reserved)
  1457.         06h get version (documented only for Back&Forth Professional)
  1458.         Return: AX = version * 100 (v1.71 = 00ABh)
  1459.         07h spawn program (Back&Forth Professional only???)
  1460.         ES:DI -> BF_SPAWN record (see #00232)
  1461.         Return: AX = status
  1462.                 0000h if no task handles free
  1463.                 0001h spawn will occur when safe
  1464.         08h get open tasks (documented only for Back&Forth Professional)
  1465.         ES:DI -> task info buffer (see #00231,#00233)
  1466.         Return: AX = number of open tasks (max 20)
  1467.         Note:    the supplied buffer must be large enough to hold 21
  1468.               task entries
  1469.         09h (reserved)
  1470.         ---Back&Forth Professional---
  1471.         0Ah get active clipboard filename
  1472.         Return: DX:AX -> ASCIZ clipboard filename
  1473.         0Bh get active task number
  1474.         AX = active task number (00h-13h)
  1475.         BX = number of tasks allocated
  1476.         DX = maximum number of tasks
  1477.         0Ch (reserved)
  1478.         0Dh (reserved)
  1479.         0Eh (reserved)
  1480.         0Fh stuff string into keyboard buffer
  1481.         ES:DI -> ASCIZ string to be stuffed
  1482.         Return: nothing
  1483.         10h check if in graphics mode
  1484.         Return: AX = state
  1485.                 0000h color text mode
  1486.                 0004h mono text mode
  1487.                 FFFFh graphics mode
  1488.         11h get Back&Forth Professional user number
  1489.         Return: AX = user number (0000h-00FFh)
  1490.         12h switch task by task number
  1491.         DX = task number
  1492.         Return: AX = status
  1493.                 0000h attempted to switch to active task
  1494.                 0001h task switch will occur when safe
  1495.                 FFFFh invalid task number
  1496.         13h delete (kill) task
  1497.         DX = task number
  1498.         Return: AX = status
  1499.                 0000h attempted to delete the active task
  1500.                 0001h successfully deleted
  1501.                 FFFFh invalid task number
  1502.         Note:    the active task number will change if the deleted task
  1503.               was lower in the task list than the active task
  1504.         14h get next available task handle
  1505.         Return:    AX = next available task handle
  1506.                 FFFFh if task table is full
  1507. Program: Back & Forth is a task switcher by Progressive Solutions, Inc.
  1508. SeeAlso: INT 11/AX=FFFEh
  1509. Index:    installation check;BACK&FORTH
  1510.  
  1511. Format of Back&Forth task info buffer:
  1512. Offset    Size    Description    (Table 00231)
  1513.  00h 21 BYTEs    ASCIZ task name
  1514.  15h    BYTE    hotkey shift state (as for INT 16/AH=02h)
  1515.  16h    WORD    hotkey scan code (see also #00006)
  1516.  18h    WORD    program ID
  1517. Index:    hotkeys;Back&Forth
  1518. SeeAlso: #00232,#00233
  1519.  
  1520. Format of Back&Forth Professional BF_SPAWN record:
  1521. Offset    Size    Description    (Table 00232)
  1522.  00h 21 BYTEs    task description
  1523.  15h    BYTE    flag: disable hotkeys
  1524.  16h    WORD    environment size in bytes
  1525.  18h    BYTE    hotkey shift flags
  1526.  19h    WORD    hotkey scancode
  1527.  1Bh    WORD    maximum number of EMS pages
  1528.  1Dh    WORD    required memory in KBytes
  1529.  1Fh  3 BYTEs    DESQview-style two-letter program ID
  1530.  22h 13 BYTEs    base name of program to be run (no path or extension)
  1531.  2Fh 66 BYTEs    directory from which to start program
  1532.  71h 66 BYTEs    initial current directory for program
  1533. SeeAlso: #00231,#00233
  1534.  
  1535. Format of Back&Forth Professional BF_TASK record:
  1536. Offset    Size    Description    (Table 00233)
  1537.  00h    DWORD    Unix-style task start time (seconds since 1/1/1970)
  1538.  04h 21 BYTEs    task description
  1539.  19h    DWORD    elapsed time in task (seconds)
  1540.  1Dh    WORD    task ID
  1541.  1Fh    BYTE    task hotkey keyboard flags
  1542.  20h    WORD    task hotkey scan code (see also #00006)
  1543.  22h    DWORD    time task was suspended/exited
  1544.  26h    WORD    task handle
  1545. SeeAlso: #00231,#00232
  1546. --------B-1300-------------------------------
  1547. INT 13 - DISK - RESET DISK SYSTEM
  1548.     AH = 00h
  1549.     DL = drive (if bit 7 is set both hard disks and floppy disks reset)
  1550. Return: AH = status (see #00234)
  1551.     CF clear if successful (returned AH=00h)
  1552.     CF set on error
  1553. Note:    forces controller to recalibrate drive heads (seek to track 0)
  1554.     for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems,
  1555.       both the master drive and the slave drive respond to the Reset
  1556.       function that is issued to either drive
  1557. SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4D/AH=00h"TI Professional"
  1558. SeeAlso: INT 56"Tandy 2000",MEM 0040h:003Eh
  1559. --------B-1301-------------------------------
  1560. INT 13 - DISK - GET STATUS OF LAST OPERATION
  1561.     AH = 01h
  1562.     DL = drive (bit 7 set for hard disk)
  1563. Return: CF clear if successful (returned status 00h)
  1564.     CF set on error
  1565.     AH = status of previous operation (see #00234)
  1566. Note:    some BIOSes return the status in AL; the PS/2 Model 30/286 returns the
  1567.       status in both AH and AL
  1568. SeeAlso: AH=00h,INT 4D/AH=01h,MEM 0040h:0041h,MEM 0040h:0074h
  1569.  
  1570. (Table 00234)
  1571. Values for disk operation status:
  1572.  00h    successful completion
  1573.  01h    invalid function in AH or invalid parameter
  1574.  02h    address mark not found
  1575.  03h    disk write-protected
  1576.  04h    sector not found/read error
  1577.  05h    reset failed (hard disk)
  1578.  05h    data did not verify correctly (TI Professional PC)
  1579.  06h    disk changed (floppy)
  1580.  07h    drive parameter activity failed (hard disk)
  1581.  08h    DMA overrun
  1582.  09h    data boundary error (attempted DMA across 64K boundary or >80h sectors)
  1583.  0Ah    bad sector detected (hard disk)
  1584.  0Bh    bad track detected (hard disk)
  1585.  0Ch    unsupported track or invalid media
  1586.  0Dh    invalid number of sectors on format (PS/2 hard disk)
  1587.  0Eh    control data address mark detected (hard disk)
  1588.  0Fh    DMA arbitration level out of range (hard disk)
  1589.  10h    uncorrectable CRC or ECC error on read
  1590.  11h    data ECC corrected (hard disk)
  1591.  20h    controller failure
  1592.  31h    no media in drive (IBM/MS INT 13 extensions)
  1593.  32h    incorrect drive type stored in CMOS (Compaq)
  1594.  40h    seek failed
  1595.  80h    timeout (not ready)
  1596.  AAh    drive not ready (hard disk)
  1597.  B0h    volume not locked in drive (INT 13 extensions)
  1598.  B1h    volume locked in drive (INT 13 extensions)
  1599.  B2h    volume not removable (INT 13 extensions)
  1600.  B3h    volume in use (INT 13 extensions)
  1601.  B4h    lock count exceeded (INT 13 extensions)
  1602.  B5h    valid eject request failed (INT 13 extensions)
  1603.  BBh    undefined error (hard disk)
  1604.  CCh    write fault (hard disk)
  1605.  E0h    status register error (hard disk)
  1606.  FFh    sense operation failed (hard disk)
  1607. SeeAlso: #M0022
  1608. --------B-1302-------------------------------
  1609. INT 13 - DISK - READ SECTOR(S) INTO MEMORY
  1610.     AH = 02h
  1611.     AL = number of sectors to read (must be nonzero)
  1612.     CH = low eight bits of cylinder number
  1613.     CL = sector number 1-63 (bits 0-5)
  1614.          high two bits of cylinder (bits 6-7, hard disk only)
  1615.     DH = head number
  1616.     DL = drive number (bit 7 set for hard disk)
  1617.     ES:BX -> data buffer
  1618. Return: CF set on error
  1619.         if AH = 11h (corrected ECC error), AL = burst length
  1620.     CF clear if successful
  1621.     AH = status (see #00234)
  1622.     AL = number of sectors transferred (only valid if CF set for some
  1623.           BIOSes)
  1624. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  1625.       enough; the read should be retried at least three times, resetting
  1626.       the disk with AH=00h between attempts
  1627.     most BIOSes support "multitrack" reads, where the value in AL
  1628.       exceeds the number of sectors remaining on the track, in which
  1629.       case any additional sectors are read beginning at sector 1 on
  1630.       the following head in the same cylinder; the MSDOS CONFIG.SYS command
  1631.       MULTITRACK (or the Novell DOS DEBLOCK=) can be used to force DOS to
  1632.       split disk accesses which would wrap across a track boundary into two
  1633.       separate calls
  1634.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  1635.       DH (head number) since the WD-1003 controller which is the standard
  1636.       AT controller (and the controller that IDE emulates) only supports
  1637.       16 heads
  1638.     AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  1639.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  1640.       into bits 6 and 7 of DH
  1641.     under Windows95, a volume must be locked (see INT 21/AX=440Dh/CX=084Bh)
  1642.       in order to perform direct accesses such as INT 13h reads and writes
  1643.     all versions of MS-DOS (including v7 [Win95]) have a bug which prevents
  1644.       booting on hard disks with 256 heads, so many modern BIOSes provide
  1645.       mappings with at most 255 heads
  1646. SeeAlso: AH=03h,AH=0Ah,AH=06h"V10DISK.SYS",AH=21h"PS/1",AH=42h"IBM"
  1647. SeeAlso: INT 21/AX=440Dh/CX=084Bh,INT 4D/AH=02h
  1648. --------B-1303-------------------------------
  1649. INT 13 - DISK - WRITE DISK SECTOR(S)
  1650.     AH = 03h
  1651.     AL = number of sectors to write (must be nonzero)
  1652.     CH = low eight bits of cylinder number
  1653.     CL = sector number 1-63 (bits 0-5)
  1654.          high two bits of cylinder (bits 6-7, hard disk only)
  1655.     DH = head number
  1656.     DL = drive number (bit 7 set for hard disk)
  1657.     ES:BX -> data buffer
  1658. Return: CF set on error
  1659.     CF clear if successful
  1660.     AH = status (see #00234)
  1661.     AL = number of sectors transferred
  1662.           (only valid if CF set for some BIOSes)
  1663. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  1664.       enough; the write should be retried at least three times, resetting
  1665.       the disk with AH=00h between attempts
  1666.     most BIOSes support "multitrack" writes, where the value in AL
  1667.       exceeds the number of sectors remaining on the track, in which
  1668.       case any additional sectors are written beginning at sector 1 on
  1669.       the following head in the same cylinder; the CONFIG.SYS command
  1670.       MULTITRACK can be used to force DOS to split disk accesses which
  1671.       would wrap across a track boundary into two separate calls
  1672.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  1673.       DH (head number) since the WD-1003 controller which is the standard
  1674.       AT controller (and the controller that IDE emulates) only supports
  1675.       16 heads
  1676.     AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  1677.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  1678.       into bits 6 and 7 of DH
  1679.     under Windows95, an application must issue a physical volume lock on
  1680.       the drive via INT 21/AX=440Dh before it can successfully write to
  1681.       the disk with this function
  1682. SeeAlso: AH=02h,AH=0Bh,AH=07h"V10DISK.SYS",AH=22h"PS/1",AH=43h"IBM"
  1683. SeeAlso: INT 21/AX=440Dh"DOS 3.2+",INT 4D/AH=03h
  1684. --------B-1304-------------------------------
  1685. INT 13 - DISK - VERIFY DISK SECTOR(S)
  1686.     AH = 04h
  1687.     AL = number of sectors to verify (must be nonzero)
  1688.     CH = low eight bits of cylinder number
  1689.     CL = sector number 1-63 (bits 0-5)
  1690.          high two bits of cylinder (bits 6-7, hard disk only)
  1691.     DH = head number
  1692.     DL = drive number (bit 7 set for hard disk)
  1693.     ES:BX -> data buffer (PC,XT,AT with BIOS prior to 11/15/85)
  1694. Return: CF set on error
  1695.     CF clear if successful
  1696.     AH = status (see #00234)
  1697.     AL = number of sectors verified
  1698. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  1699.       enough; the write should be retried at least three times, resetting
  1700.       the disk with AH=00h between attempts
  1701.     this function does not compare the disk with memory, it merely
  1702.       checks whether the sector's stored CRC matches the data's actual CRC
  1703.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  1704.       DH (head number) since the WD-1003 controller which is the standard
  1705.       AT controller (and the controller that IDE emulates) only supports
  1706.       16 heads
  1707.     AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  1708.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  1709.       into bits 6 and 7 of DH
  1710. SeeAlso: AH=02h,AH=44h,INT 4D/AH=04h,INT 4D/AH=06h
  1711. --------B-1305-------------------------------
  1712. INT 13 - FLOPPY - FORMAT TRACK
  1713.     AH = 05h
  1714.     AL = number of sectors to format
  1715.     CH = track number
  1716.     DH = head number
  1717.     DL = drive number
  1718.     ES:BX -> address field buffer (see #00235)
  1719. Return: CF set on error
  1720.     CF clear if successful
  1721.     AH = status (see #00234)
  1722. Notes:    on AT or higher, call AH=17h first
  1723.     the number of sectors per track is read from the diskette parameter
  1724.       table pointed at by INT 1E
  1725. SeeAlso: AH=05h"FIXED",AH=17h,AH=18h,INT 1E
  1726.  
  1727. Format of floppy format address field buffer entry (one per sector in track):
  1728. Offset    Size    Description    (Table 00235)
  1729.  00h    BYTE    track number
  1730.  01h    BYTE    head number (0-based)
  1731.  02h    BYTE    sector number
  1732.  03h    BYTE    sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024)
  1733. --------B-1305-------------------------------
  1734. INT 13 - FIXED DISK - FORMAT TRACK
  1735.     AH = 05h
  1736.     AL = interleave value (XT-type controllers only)
  1737.     ES:BX -> 512-byte format buffer
  1738.         the first 2*(sectors/track) bytes contain F,N for each sector
  1739.            F = sector type
  1740.             00h for good sector
  1741.             20h to unassign from alternate location
  1742.             40h to assign to alternate location
  1743.             80h for bad sector
  1744.            N = sector number
  1745.     CH = cylinder number (bits 8,9 in high bits of CL)
  1746.     CL = high bits of cylinder number (bits 7,6)
  1747.     DH = head
  1748.     DL = drive
  1749. Return: CF set on error
  1750.     CF clear if successful
  1751.     AH = status code (see #00234)
  1752. Notes:    AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  1753.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  1754.       into bits 6 and 7 of DH
  1755.     for XT-type controllers on an AT or higher, AH=0Fh should be called
  1756.       first
  1757.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  1758.       DH (head number) since the WD-1003 controller which is the standard
  1759.       AT controller (and the controller that IDE emulates) only supports
  1760.       16 heads
  1761.     not all controller support sector types 20h and 40h
  1762.     under Windows95, an application must issue a physical volume lock on
  1763.       the drive via INT 21/AX=440Dh before it can successfully write to
  1764.       the disk with this function
  1765. SeeAlso: AH=05h"FLOPPY",AH=06h"FIXED",AH=07h"FIXED",AH=0Fh,AH=18h,AH=1Ah
  1766. --------d-1305-------------------------------
  1767. INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND
  1768.     AH = 05h
  1769.     DL = hard drive ID
  1770.     ES:BX -> mode select data (see #00236)
  1771. Return: CF set on error
  1772.     CF clear if successful
  1773.     AH = status code (see #00234)
  1774. Notes:    this function can be called before AH=07h"SCSI" or AH=06h"SCSI" to
  1775.       format a SCSI disk with the desired parameters
  1776.     the mode select data below is from the SCSI-1 specification
  1777.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  1778.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  1779. SeeAlso: AH=06h"SCSI",AH=07h"SCSI",INT 4F/AX=8100h
  1780.  
  1781. Format of Future Domain SCSI mode select data:
  1782. Offset    Size    Description    (Table 00236)
  1783.  00h    BYTE    number of bytes of remaining data (12 + vendor unique length)
  1784.  01h    BYTE    reserved (0)
  1785.  02h    BYTE    medium type (0 for hard disk)
  1786.  03h    BYTE    reserved (0)
  1787.  04h    BYTE    block descriptor length (8)
  1788.  05h    BYTE    density code (0 for hard disk)
  1789.  06h  3 BYTEs    (big-endian) number of blocks (000000h for entire disk)
  1790.  09h    BYTE    reserved (0)
  1791.  0Ah  3 BYTEs    (big-endian) block length (512 standard, or 256)
  1792.  0Dh    ???    vendor-specific parameter bytes (optional)
  1793. --------d-13057FSI324D-----------------------
  1794. INT 13 - 2M - FORMAT TRACK
  1795.     AX = 057Fh
  1796.     SI = 324Dh ("2M")
  1797.     CH = track number
  1798.     DH = head number
  1799.     DL = drive number
  1800.     ES:BX -> boot sector of future 2M diskette
  1801. Return: CF set on error
  1802.     CF clear if successful
  1803.     AH = status (see #00234)
  1804. Program: 2M is a TSR developed by Ciriaco Garcia de Celis to support
  1805.       non standard diskettes with 820-902/1476-1558K (5.25 DD/HD)
  1806.       and 984-1066/1804-1886K/3608-3772K (3.5 DD/HD/ED)
  1807. InstallCheck: must search for a "CiriSOFT:2M:1.3" or "CiriSOFT:2MX:3.0" or
  1808.       similar (recomended ":2M:", ":2MX:", or ":2MB:" substrings) in the
  1809.       CiriSOFT TSR interface
  1810. Notes:    it is not necessary to call AH=17h or AH=18h first (will be ignored)
  1811.     the diskette format must always begin on cylinder 0 head 0
  1812.     the boot sector can be obtained from an already-formatted 2M diskette
  1813.       (by calling AH=02h with head number 00h in 2M v1.x and with head
  1814.       number 80h for 2M v2+)
  1815.     since 2M v2.0, the BOOT sector is emulated using the first physical
  1816.       sector of FAT2; the second-sixth physical sectors of FAT2 in HD or ED
  1817.       diskettes store the SuperBOOT code. To skip the FAT2 emulation (using
  1818.       FAT1) of 2M, in order to read the SuperBOOT code, head number must be
  1819.       80h-81h instead 0-1 (bit 7 active) in standard read/write functions.
  1820.       This lets diskcopy programs format 2M target diskettes copying
  1821.       SuperBOOT code. If the target diskette is already 2MF formatted
  1822.       (containing boot code) this trick it is not necessary.
  1823.     when using STV technology (offset 65 of boot sector equal to 1) it is
  1824.       necessary to write the full track before formatting (except track 0
  1825.       side 0) to complete the format and skip future CRC errors on read; in
  1826.       track 0 side 1 the head used must be 81h instead 1. Diskcopy programs
  1827.       may do a format-write-verify sequential phases to improve performance
  1828. SeeAlso: AH=05h"FLOPPY",AH=18h/CX=5055h,INT 2F"CiriSOFT"
  1829. --------B-1306-------------------------------
  1830. INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT)
  1831.     AH = 06h
  1832.     AL = interleave value
  1833.     CH = cylinder number (bits 8,9 in high bits of CL)
  1834.     CL = sector number
  1835.     DH = head
  1836.     DL = drive
  1837. Return: AH = status code (see #00234)
  1838. Note:    AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  1839.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  1840.       into bits 6 and 7 of DH
  1841. SeeAlso: AH=05h"FIXED",AH=07h"FIXED"
  1842. --------d-1306-------------------------------
  1843. INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE WITH BAD SECTOR MAPPING
  1844.     AH = 06h
  1845.     AL = interleave
  1846.          (0 = default, 1 = consecutive sectors, 2 - 255 = vendor unique)
  1847.     DL = hard drive ID
  1848.     DH = defect list info (see #00237)
  1849.     ES:BX -> defect table A, B or C (see #00238,#00239,#00240)
  1850. Return: CF set on error
  1851.     CF clear if successful
  1852.     AH = status code (see #00234)
  1853. Notes:    block addresses must be in ascending order (for table B, cylinder is
  1854.       most significant, byte from index least significant; for table C,
  1855.       cylinder is most significant, sector number least significant)
  1856.     table B defect bytes from index of FFFFFFFFh indicates that the entire
  1857.       track shall be reassigned
  1858.     table C defect sector number of FFFFFFFFh indicates that the entire
  1859.       track shall be reassigned
  1860.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  1861.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  1862. SeeAlso: AH=05h"SCSI",AH=06h"FIXED",AH=07h"SCSI"
  1863.  
  1864. Bitfields for Future Domain SCSI defect list info:
  1865. Bit(s)    Description    (Table 00237)
  1866.  7-5    drive LUN
  1867.  4    defect list is available
  1868.  3    defect list is complete (erase drive's defect list)
  1869.  2-0    defect table format
  1870.     (000=use defect table A, 100=use defect table B,
  1871.      101=use defect table C)
  1872.  
  1873. Format of Future Domain SCSI defect table A:
  1874. Offset    Size    Description    (Table 00238)
  1875.  00h    WORD    number of bytes remaining in table
  1876.  02h    BYTE    reserved (0)
  1877.  03h    BYTE    reserved (0)
  1878.  04h    WORD    (big-endian) defect list length (4*number of defects)
  1879.  06h  4 DWORDs    (big-endian) defect block addresses
  1880.  
  1881. Format of Future Domain SCSI defect table B:
  1882. Offset    Size    Description    (Table 00239)
  1883.  00h    WORD    number of bytes remaining in table
  1884.  02h    BYTE    reserved (0)
  1885.  03h    BYTE    reserved (0)
  1886.  04h    WORD    (big-endian) defect list length (8*number of defects)
  1887.  06h 8N BYTEs    defect list [array] (see #00241)
  1888.  
  1889. Format of Future Domain SCSI defect table C:
  1890. Offset    Size    Description    (Table 00240)
  1891.  00h    WORD    number of bytes remaining in table
  1892.  02h    BYTE    reserved (0)
  1893.  03h    BYTE    reserved (0)
  1894.  04h    WORD    (big-endian) defect list length (8*number of defects)
  1895.  06h 8N BYTEs    defect list [array] (see #00241)
  1896.  
  1897. Format of Future Domain SCSI defect list entry:
  1898. Offset    Size    Description    (Table 00241)
  1899.  00h  3 BYTEs    (big-endian) cylinder number of defect
  1900.  03h    BYTE    head number of defect
  1901.  04h    DWORD    (big-endian) defect bytes from index
  1902. --------d-1306-------------------------------
  1903. INT 13 - Adaptec AHA-154xA/Bustek BT-542 BIOS - IDENTIFY SCSI DEVICES
  1904.     AH = 06h
  1905. Return: AH = status code (see #00234)
  1906.     CF clear if successful
  1907.         AL = first drive supported
  1908.         (80h nonconcurrent operation, 81h concurrent operation)
  1909.     CF set on error
  1910. Desc:    determine the number of the first supported SCSI drive
  1911. Note:    the return value is 80h when two SCSI drives are supported, 81h if
  1912.       only one SCSI drive is installed
  1913. SeeAlso: AH=08h"PC",#00732 at INT 1A/AX=B102h
  1914. --------d-1306-------------------------------
  1915. INT 13 - V10DISK.SYS - READ DELETED SECTORS
  1916.     AH = 06h
  1917.     AL = number of sectors
  1918.     CH = cylinder number (bits 8,9 in high bits of CL)
  1919.     CL = sector number
  1920.     DH = head
  1921.     DL = drive
  1922.     ES:BX -> buffer
  1923. Return: AH = status code (see #00234)
  1924. Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
  1925. SeeAlso: AH=02h,AH=07h"V10DISK.SYS"
  1926. --------B-1307-------------------------------
  1927. INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT)
  1928.     AH = 07h
  1929.     AL = interleave value (XT only)
  1930.     ES:BX = 512-byte format buffer (see AH=05h)
  1931.     CH = cylinder number (bits 8,9 in high bits of CL)
  1932.     CL = sector number
  1933.     DH = head
  1934.     DL = drive
  1935. Return: AH = status code (see #00234)
  1936. Note:    AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  1937.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  1938.       into bits 6 and 7 of DH
  1939. SeeAlso: AH=05h"FIXED",AH=06h"FIXED",AH=1Ah
  1940. --------d-1307-------------------------------
  1941. INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE
  1942.     AH = 07h
  1943.     AL = interleave (0 = default, 1 = consecutive sectors,
  1944.            2 - 255 = vendor unique)
  1945.     DL = hard drive ID
  1946. Return: CF set on error
  1947.     CF clear if successful
  1948.     AH = status code (see #00234)
  1949. SeeAlso: AH=05h"SCSI",AH=06h"SCSI",AH=07h"FIXED"
  1950. --------d-1307-------------------------------
  1951. INT 13 - V10DISK.SYS - WRITE DELETED SECTORS
  1952.     AH = 07h
  1953.     AL = number of sectors
  1954.     CH = cylinder number (bits 8,9 in high bits of CL)
  1955.     CL = sector number
  1956.     DH = head
  1957.     DL = drive
  1958.     ES:BX -> buffer
  1959. Return: AH = status code (see #00234)
  1960. Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
  1961. SeeAlso: AH=03h,AH=06h"V10DISK.SYS"
  1962. --------B-1308-------------------------------
  1963. INT 13 - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS,ESDI,SCSI)
  1964.     AH = 08h
  1965.     DL = drive (bit 7 set for hard disk)
  1966. Return: CF set on error
  1967.         AH = status (07h) (see #00234)
  1968.     CF clear if successful
  1969.         AH = 00h
  1970.         AL = 00h on at least some BIOSes
  1971.         BL = drive type (AT/PS2 floppies only) (see #00242)
  1972.         CH = low eight bits of maximum cylinder number
  1973.         CL = maximum sector number (bits 5-0)
  1974.          high two bits of maximum cylinder number (bits 7-6)
  1975.         DH = maximum head number
  1976.         DL = number of drives
  1977.         ES:DI -> drive parameter table (floppies only)
  1978. Notes:    may return successful even though specified drive is greater than the
  1979.       number of attached drives of that type (floppy/hard); check DL to
  1980.       ensure validity
  1981.     for systems predating the IBM AT, this call is only valid for hard
  1982.       disks, as it is implemented by the hard disk BIOS rather than the
  1983.       ROM BIOS
  1984.     Toshiba laptops with HardRAM return DL=02h when called with DL=80h,
  1985.       but fail on DL=81h.  The BIOS data at 40h:75h correctly reports 01h.
  1986.     may indicate only two drives present even if more are attached; to
  1987.       ensure a correct count, one can use AH=15h to scan through possible
  1988.       drives
  1989.     for BIOSes which reserve the last cylinder for testing purposes, the
  1990.       cylinder count is automatically decremented
  1991.     on PS/1s with IBM ROM DOS 4, nonexistent drives return CF clear,
  1992.       BX=CX=0000h, and ES:DI = 0000h:0000h
  1993.     the PC-Tools PCFORMAT program requires that AL=00h before it will
  1994.       proceed with the formatting
  1995. BUG:    several different Compaq BIOSes incorrectly report high-numbered
  1996.       drives (such as 90h, B0h, D0h, and F0h) as present, giving them the
  1997.       same geometry as drive 80h; as a workaround, scan through disk
  1998.       numbers, stopping as soon as the number of valid drives encountered
  1999.       equals the value in 0040h:0075h
  2000. SeeAlso: AH=06h"Adaptec",AH=13h"SyQuest",AH=48h,AH=15h,INT 1E
  2001. SeeAlso: INT 41"HARD DISK 0"
  2002.  
  2003. (Table 00242)
  2004. Values for diskette drive type:
  2005.  01h    360K
  2006.  02h    1.2M
  2007.  03h    720K
  2008.  04h    1.44M
  2009.  05h    ??? (reportedly an obscure drive type shipped on some IBM machines)
  2010.     2.88M on some machines (at least AMI 486 BIOS)
  2011.  06h    2.88M
  2012.  10h    ATAPI Removable Media Device
  2013. --------d-1308-------------------------------
  2014. INT 13 - V10DISK.SYS - SET FORMAT
  2015.     AH = 08h
  2016.     AL = number of sectors
  2017.     CH = cylinder number (bits 8,9 in high bits of CL)
  2018.     CL = sector number
  2019.     DH = head
  2020.     DL = drive
  2021. Return: AH = status code (see #00234)
  2022. Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
  2023. Note:    details not available
  2024. SeeAlso: AH=03h,AH=06h"V10DISK.SYS"
  2025. --------y-130800DLF0-------------------------
  2026. INT 13 - SecureDrive - INSTALLATION CHECK
  2027.     AX = 08000h
  2028.     DL = F0h
  2029. Return: AX = EDCBh for version 1.0-1.2
  2030.     AX = EDCCh for version 1.3
  2031.     CX = code segment
  2032.     DX = data address within code segment
  2033. Program: SecureDrive by Mike Ingle <mikeingle@delphi.com> allows you to create
  2034.       an encrypted partition on your harddisk.
  2035. --------B-1309-------------------------------
  2036. INT 13 - HARD DISK - INITIALIZE CONTROLLER WITH DRIVE PARAMETERS (AT,PS)
  2037.     AH = 09h
  2038.     DL = drive (80h for first, 81h for second)
  2039. Return: CF clear if successful
  2040.     CF set on error
  2041.     AH = status (see #00234)
  2042. Notes:    on the PC and XT, this function uses the parameter table pointed at by
  2043.       INT 41
  2044.     on the AT and later, this function uses the parameter table pointed at
  2045.       by INT 41 if DL=80h, and the parameter table pointed at by INT 46 if
  2046.       DL=81h
  2047. SeeAlso: INT 41"HARD DISK 0",INT 46"HARD DISK 1"
  2048. --------B-130A-------------------------------
  2049. INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later)
  2050.     AH = 0Ah
  2051.     AL = number of sectors (01h may be only value supported)
  2052.     CH = low eight bits of cylinder number
  2053.     CL = sector number (bits 5-0)
  2054.          high two bits of cylinder number (bits 7-6)
  2055.     DH = head number
  2056.     DL = drive number (80h = first, 81h = second)
  2057.     ES:BX -> data buffer
  2058. Return: CF clear if successful
  2059.     CF set on error
  2060.     AH = status (see #00234)
  2061.     AL = number of sectors transferred
  2062. Notes:    this function reads in four to seven bytes of error-correcting code
  2063.       along with each sector's worth of information
  2064.     data errors are not automatically corrected, and the read is aborted
  2065.       after the first sector with an ECC error
  2066.     used for diagnostics only on PS/2 systems; IBM officially classifies
  2067.       this function as optional
  2068. SeeAlso: AH=02h,AH=0Bh,MEM 0040h:0074h
  2069. --------B-130B-------------------------------
  2070. INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later)
  2071.     AH = 0Bh
  2072.     AL = number of sectors (01h may be only value supported)
  2073.     CH = low eight bits of cylinder number
  2074.     CL = sector number (bits 5-0)
  2075.          high two bits of cylinder number (bits 7-6)
  2076.     DH = head number
  2077.     DL = drive number (80h = first, 81h = second)
  2078.     ES:BX -> data buffer
  2079. Return: CF clear if successful
  2080.     CF set on error
  2081.     AH = status (see #00234)
  2082.     AL = number of sectors transferred
  2083. Notes:    each sector's worth of data must be followed by four to seven bytes of
  2084.       error-correction information
  2085.     used for diagnostics only on PS/2 systems; IBM officially classifies
  2086.       this function as optional
  2087. SeeAlso: AH=03h,AH=0Ah,MEM 0040h:0074h
  2088. --------B-130C-------------------------------
  2089. INT 13 - HARD DISK - SEEK TO CYLINDER
  2090.     AH = 0Ch
  2091.     CH = low eight bits of cylinder number
  2092.     CL = sector number (bits 5-0)
  2093.         high two bits of cylinder number (bits 7-6)
  2094.     DH = head number
  2095.     DL = drive number (80h = first, 81h = second hard disk)
  2096. Return: CF set on error
  2097.     CF clear if successful
  2098.     AH = status (see #00234)
  2099. SeeAlso: AH=00h,AH=02h,AH=0Ah,AH=47h
  2100. --------B-130D-------------------------------
  2101. INT 13 - HARD DISK - RESET HARD DISKS
  2102.     AH = 0Dh
  2103.     DL = drive number (80h = first, 81h = second hard disk)
  2104. Return: CF set on error
  2105.     CF clear if successful
  2106.     AH = status (see #00234)
  2107. Notes:    reinitializes the hard disk controller, resets the specified drive's
  2108.       parameters, and recalibrates the drive's heads (seek to track 0)
  2109.     for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems,
  2110.       both the master drive and the slave drive respond to the Reset
  2111.       function that is issued to either drive
  2112.     not for PS/2 ESDI drives
  2113. SeeAlso: AH=00h,INT 21/AH=0Dh
  2114. --------B-130E-------------------------------
  2115. INT 13 - HARD DISK - READ SECTOR BUFFER (XT only)
  2116.     AH = 0Eh
  2117.     DL = drive number (80h = first, 81h = second hard disk)
  2118.     ES:BX -> buffer
  2119. Return: CF set on error
  2120.     CF clear if successful
  2121.     AH = status code (see #00234)
  2122. Notes:    transfers controller's sector buffer.  No data is read from the drive
  2123.     used for diagnostics only on PS/2 systems
  2124. SeeAlso: AH=0Ah
  2125. --------B-130F-------------------------------
  2126. INT 13 - HARD DISK - WRITE SECTOR BUFFER (XT only)
  2127.     AH = 0Fh
  2128.     DL = drive number (80h = first, 81h = second hard disk)
  2129.     ES:BX -> buffer
  2130. Return: CF set on error
  2131.     CF clear if successful
  2132.     AH = status code (see #00234)
  2133. Notes:    does not write data to the drive
  2134.     should be called before formatting to initialize an XT-type
  2135.       controller's sector buffer
  2136.     used for diagnostics only on PS/2 systems
  2137. SeeAlso: AH=0Bh
  2138. --------B-1310-------------------------------
  2139. INT 13 - HARD DISK - CHECK IF DRIVE READY
  2140.     AH = 10h
  2141.     DL = drive number (80h = first, 81h = second hard disk)
  2142. Return: CF set on error
  2143.     CF clear if successful
  2144.     AH = status (see #00234 at AH=01h)
  2145. SeeAlso: AH=11h
  2146. --------B-1311-------------------------------
  2147. INT 13 - HARD DISK - RECALIBRATE DRIVE
  2148.     AH = 11h
  2149.     DL = drive number (80h = first, 81h = second hard disk)
  2150. Return: CF set on error
  2151.     CF clear if successful
  2152.     AH = status (see #00234 at AH=01h)
  2153. Note:    causes hard disk controller to seek the specified drive to cylinder 0
  2154. SeeAlso: AH=00h,AH=0Ch,AH=10h,AH=19h"FIXED DISK",MEM 0040h:003Eh
  2155. --------B-1312-------------------------------
  2156. INT 13 - HARD DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS)
  2157.     AH = 12h
  2158.     DL = drive number (80h = first, 81h = second hard disk)
  2159. Return: CF set on error
  2160.     CF clear if successful
  2161.     AH = status code (see #00234 at AH=01h)
  2162.     AL = 00h
  2163. SeeAlso: AH=13h,AH=14h
  2164. --------d-1312-------------------------------
  2165. INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
  2166.     AH = 12h
  2167.     DL = hard drive ID
  2168. Return: CF set on error
  2169.     CF clear if successful
  2170.     AH = status code (see #00234 at AH=01h)
  2171. Notes:    available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A
  2172.     if the given drive is a SCSI device, the SCSI Stop Unit command is sent
  2173.       and either "Disk prepared for shipping" or "Disk Stop command failed"
  2174.       is displayed
  2175.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  2176.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  2177. --------d-1312-------------------------------
  2178. INT 13 - SyQuest - START/STOP SCSI DISK
  2179.     AH = 12h
  2180.     AL = subfunction
  2181.         00h start disk
  2182.         01h stop disk
  2183.     CX = wait flag
  2184.         00h wait for ready
  2185.         01h don't wait for ready
  2186.     DL = hard drive ID (bit 7 for hard disks must be set)
  2187. Return: CF set on error
  2188.     CF clear if successful
  2189.     AH = status
  2190.         00h successful
  2191.         01h invalid function request
  2192.         80h timeout
  2193. SeeAlso: AH=12h"Future Domain",AH=13h"SyQuest"
  2194. --------B-1313-------------------------------
  2195. INT 13 - HARD DISK - DRIVE DIAGNOSTIC (XT,PS)
  2196.     AH = 13h
  2197.     DL = drive number (80h = first, 81h = second hard disk)
  2198. Return: CF set on error
  2199.     CF clear if successful
  2200.     AH = status code (see #00234 at AH=01h)
  2201.     AL = 00h
  2202. SeeAlso: AH=12h"HARD DISK",AH=14h"HARD DISK"
  2203. --------d-1313-------------------------------
  2204. INT 13 - SyQuest - READ DRIVE PARAMATERS (for DOS 5+)
  2205.     AH = 13h
  2206.     DL = drive ID (bit 7 set for hard disks)
  2207. Return: CF set on error
  2208.         AH = status (07h) (see #00234 at AH=01h)
  2209.     CF clear if successful
  2210.         AH = 00h
  2211.         BL = drive type (AT/PS2 floppies only) (see #00242)
  2212.         CH = low eight bits of maximum cylinder number
  2213.         CL = maximum sector number (bits 5-0)
  2214.          high two bits of maximum cylinder number (bits 7-6)
  2215.         DH = maximum head number
  2216.         DL = number of drives
  2217.         ES:DI -> drive parameter table (floppies only)
  2218. Notes:    the return values are identical to the standard INT 13/AH=08h, but the
  2219.       number of drives is not limited to 2, so
  2220.     scanning all possible drive numbers with the Read DASD Type call
  2221.       (AH=15h) should generally be preferred to determine the number of
  2222.       drives attached to the system.
  2223. SeeAlso: AH=08h"PC",AH=12h"SyQuest",AH=15h,AH=59h"SyQuest"
  2224. --------B-1314-------------------------------
  2225. INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC
  2226.     AH = 14h
  2227. Return: CF set on error
  2228.     CF clear if successful
  2229.     AH = status code (see #00234 at AH=01h)
  2230.     AL = 00h
  2231. SeeAlso: AH=12h,AH=13h
  2232. --------B-1315-------------------------------
  2233. INT 13 - DISK - GET DISK TYPE (XT 1/10/86 or later,XT286,AT,PS)
  2234.     AH = 15h
  2235.     DL = drive number (bit 7 set for hard disk)
  2236. Return: CF clear if successful
  2237.         AH = type code
  2238.         00h no such drive
  2239.         01h floppy without change-line support
  2240.         02h floppy (or other removable drive) with change-line support
  2241.         03h hard disk
  2242.             CX:DX = number of 512-byte sectors
  2243.     CF set on error
  2244.         AH = status (see #00234 at AH=01h)
  2245. Note:    SyQuest can report type 01h or 02h for 'hard disks', since its media
  2246.       is removable
  2247. BUGS:    many versions of the Award 486 BIOS do not return the sector count
  2248.       because the BIOS exit code restores CX and DX to their original
  2249.       values after the function had already set them to correct values
  2250.     several different Compaq BIOSes incorrectly report high-numbered
  2251.       drives (such as 90h, B0h, D0h, and F0h) as present, giving them the
  2252.       same geometry as drive 80h; as a workaround, scan through disk
  2253.       numbers, stopping as soon as the number of valid drives encountered
  2254.       equals the value in 0040h:0075h
  2255. SeeAlso: AH=08h,AH=16h,AH=17h,AH=19h"SCSI",MEM 0040h:0075h
  2256. --------B-1316-------------------------------
  2257. INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1/10/86 or later,XT286,AT,PS)
  2258.     AH = 16h
  2259.     DL = drive number (00h-7Fh)
  2260. Return: CF clear if change line inactive
  2261.         AH = 00h (disk not changed)
  2262.     CF set if change line active
  2263.         AH = status
  2264.         01h invalid command (SyQuest)
  2265.         06h change line active or not supported
  2266.         80h drive not ready or not present
  2267. Notes:    call AH=15h first to determine whether the drive supports a change
  2268.       line
  2269.     this call also clears the media-change status, so that a disk change
  2270.       is only reported once
  2271. BUG:    some versions of Award 386 Modular BIOS and AMI BIOS fail to clear
  2272.       the media-change status
  2273. SeeAlso: AH=15h,AH=49h
  2274. --------B-1317-------------------------------
  2275. INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS)
  2276.     AH = 17h
  2277.     AL = format type
  2278.         01h = 320/360K disk in 360K drive
  2279.         02h = 320/360K disk in 1.2M drive
  2280.         03h = 1.2M disk in 1.2M drive
  2281.         04h = 720K disk in 720K or 1.44M drive
  2282.     DL = drive number
  2283. Return: CF set on error
  2284.     CF clear if successful
  2285.     AH = status (see #00234 at AH=01h)
  2286. Note:    this function does not handle 1.44M drives; use AH=18h instead
  2287. SeeAlso: AH=15h,AH=18h
  2288. --------d-131700-----------------------------
  2289. INT 13 - Future Domain SCSI CONTROLLER - GET INQUIRY INFO FROM SCSI DEVICE
  2290.     AX = 1700h
  2291.     CL = length of buffer
  2292.     DL = hard drive ID
  2293.     ES:BX -> buffer for info (see #00243)
  2294. Return: CF clear if successful
  2295.         CH = number of bytes returned in buffer???
  2296.     CF set on error
  2297.         AH = status code (see #00234 at AH=01h)
  2298. Notes:    this function is not available with 8-bit controller ROM versions < 7.0
  2299.     information block bytes 5-n are vendor-specific in older SCSI devices
  2300.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  2301.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  2302. SeeAlso: AH=18h"SCSI",AH=1Bh"SCSI"
  2303.  
  2304. Format of Future Domain SCSI inquiry information block:
  2305. Offset    Size    Description    (Table 00243)
  2306.  00h    BYTE    device type
  2307.         bits 0-4: peripheral device type (see #00244)
  2308.         bits 5-7: peripheral qualifier (see #00245)
  2309.  01h    BYTE    device type modifier
  2310.         bits 0-6: device type modifier
  2311.         bit 7: removable medium
  2312.  02h    BYTE    SCSI version (see #00246)
  2313.  03h    BYTE    data format/capabilities (see #00247)
  2314.  04h    BYTE    additional data length (total remaining bytes)
  2315.  05h  2 BYTEs    reserved
  2316.  07h    BYTE    device capabilities (see #00248)
  2317.  08h  8 BYTEs    vendor identification (space-padded ASCII)
  2318.  10h  8 BYTEs    product identification (space-padded ASCII)
  2319.  20h  4 BYTEs    product revision level (space-padded ASCII)
  2320.  24h 20 BYTEs    vendor specific
  2321.  38h 40 BYTEs    reserved
  2322.  60h    var    vendor specific parameters
  2323.  
  2324. (Table 00244)
  2325. Values for Future Domain SCSI peripheral device type:
  2326.  00h    direct-access device (e.g., magnetic disk)
  2327.  01h    sequential-access device (e.g., magnetic tape)
  2328.  02h    printer device
  2329.  03h    processor device
  2330.  04h    write-once device (e.g., some optical disks)
  2331.  05h    CD-ROM device
  2332.  06h    scanner device
  2333.  07h    optical memory device (e.g., some optical disks)
  2334.  08h    medium changer device (e.g., jukeboxes)
  2335.  09h    communications device
  2336.  0Ah    (defined by ASC IT8)
  2337.  0Bh    (defined by ASC IT8)
  2338.  0Ch-1Eh reserved
  2339.  1Fh    unknown or no device type
  2340.  
  2341. (Table 00245)
  2342. Values for Future Domain SCSI peripheral qualifier:
  2343.  000b    device is currently connected to this logical unit and available
  2344.  001b    target is capable of supporting the specified peripheral, but the
  2345.       physical device is not currently connected to this logical unit
  2346.  010b    reserved
  2347.  011b    target can't support a physical device on this logical unit
  2348.  1xxb    vendor specific
  2349.  
  2350. Bitfields for Future Domain SCSI version:
  2351. Bit(s)    Description    (Table 00246)
  2352.  0-2    ANSI-approved version
  2353.     000 device might or might not comply to ANSI standard
  2354.     001 device complies to ANSI SCSI-1
  2355.     010 device complies to ANSI SCSI-2
  2356.     other reserved
  2357.  3-5    ECMA version
  2358.  6-7    ISO version
  2359.  
  2360. Bitfields for Future Domain SCSI data format/capabilities:
  2361. Bit(s)    Description    (Table 00247)
  2362.  0-2    response data format
  2363.     000 information block is as specified in SCSI-1
  2364.     001 information block is as specified in CCS
  2365.     010 information block is as specified in SCSI-2
  2366.     other reserved
  2367.  4-5    reserved
  2368.  6    terminate I/O process supported
  2369.  7    asynchronous event notification supported
  2370.  
  2371. Bitfields for Future Domain SCSI device capabilities:
  2372. Bit(s)    Description    (Table 00248)
  2373.  0    device responds to RESET with a hard RESET
  2374.  1    tagged command queuing supported
  2375.  2    reserved
  2376.  3    linked commands supported
  2377.  4    synchronous data transfer supported
  2378.  5    16-transfers supported
  2379.  6    32-transfers supported
  2380.  7    relative addressing supported
  2381. --------B-1318-------------------------------
  2382. INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
  2383.     AH = 18h
  2384.     DL = drive number
  2385.     CH = lower 8 bits of highest cylinder number (number of cylinders - 1)
  2386.     CL = sectors per track (bits 0-5)
  2387.          top 2 bits of highest cylinder number (bits 6,7)
  2388. Return: AH = status
  2389.         00h requested combination supported
  2390.         01h function not available
  2391.         0Ch not supported or drive type unknown
  2392.         80h there is no disk in the drive
  2393.     ES:DI -> 11-byte parameter table (see #01264 at INT 1E)
  2394. Note:    this function does not set the INT 1E vector to point at the returned
  2395.       parameter table; it is the caller's responsibility to do so
  2396. SeeAlso: AH=05h,AH=07h,AH=17h,INT 1E
  2397. --------d-1318-------------------------------
  2398. INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
  2399.     AH = 18h
  2400.     DL = hard drive ID
  2401. Return: CF set on error
  2402.         AH = status code (see #00234 at AH=01h)
  2403.     CF clear if successful
  2404.         AX = 4321h (magic number)
  2405.         CX = controller family code (see #00249)
  2406.         ---if family code=0200h
  2407.         DH = number of exclusively ROM-controlled SCSI devices
  2408.         DL = canonical SCSI device number for specified drive
  2409.         ---if family code <> 0200h
  2410.         BH = number of exclusively ROM-controlled SCSI devices
  2411.         BL = canonical SCSI device number for specified drive
  2412. Notes:    also sets an internal flag (non-resettable) which prevents some
  2413.       controller messages from being displayed, allows writes to
  2414.       removable devices (use caution!), and enables the INT 13 interface
  2415.       for more than one drive (i.e. DL >= 81h) in at least some ROM
  2416.       versions
  2417.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  2418.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  2419. SeeAlso: AH=05h"SCSI",AX=1700h"SCSI",AH=1Bh"SCSI",INT 4F/AX=8100h
  2420.  
  2421. (Table 00249)
  2422. Values for Future Domain SCSI controller family code:
  2423.  0200h    TMC-1680/? (ROM 3.0)
  2424.  0203h    TMC-1650/1660/1670/1680 (ROM 2.0)
  2425.  040Ah    TMC-820/830/840/850/860/870/875/880/885 (ROM <= 6.0A)
  2426.  050Dh    TMC-840/841/880/881 (ROM 5.2D)
  2427.  0700h    TMC-830/850/860/875/885 (ROM 7.0)
  2428. --------d-1318--CX5055-----------------------
  2429. INT 13 - PU_1700.COM - INSTALLATION CHECK
  2430.     AH = 18h
  2431.     CX = 5055h ('PU')
  2432.     DL = 00h
  2433. Return: AX = 7570h ('up') if PU_1700 is installed
  2434. Program: PU_1700 is a BIOS enhancer from PU Service Systems which permits
  2435.       formatting diskettes at higher capacity (1.78M instead of 1.44M)
  2436. SeeAlso: AX=057Fh/SI=324Dh"2M"
  2437. --------d-1318--CXD2C9-----------------------
  2438. INT 13 - XDF.COM - API
  2439.     AH = 18h
  2440.     CX = D2C9h ("R"+80h, "I"+80h = Roger Ivey)
  2441.     DX = 0000h
  2442.     BX = function
  2443.         0000h installation check
  2444.           Return: AH = 0Ch
  2445.               CX = 7269h ("ri" = Roger Ivey)
  2446.               ES = segment of driver
  2447.               CF set
  2448.         2F64h ("/d") disable the driver
  2449.           Return: AH = 0Ch
  2450.               ES:BX = pointer to activation flag (it is set to 0:
  2451.                   set it to 1 to enable the driver again)
  2452.               CX = 7269h
  2453.               CF set
  2454.         2F75h ("/u") unload the driver (restore interrupts & free memory)
  2455.           Return: AH = 0Ch
  2456.               DL = 55h ("U") if successful
  2457.                  = 00h       if fails
  2458.               CX = 7269h
  2459.               ES = segment of driver
  2460.               CF set
  2461.               AL, BX, DH, and DI destroyed
  2462. Program: XDF is a TSR provided with PC-DOS 7.0 to support XDF 1.84M disks,
  2463.       developed by Roger D. Ivey
  2464. Note:    After disabling or enabling the driver, a disk change must be performed
  2465.       or simulated to reset the driver.
  2466. --------B-1319-------------------------------
  2467. INT 13 - FIXED DISK - PARK HEADS ON ESDI DRIVE (XT286,PS)
  2468.     AH = 19h
  2469.     DL = drive
  2470. Return: CF set on error
  2471.     CF clear if successful
  2472.     AH = status (see #00234 at AH=01h)
  2473. SeeAlso: AH=11h
  2474. --------d-1319-------------------------------
  2475. INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
  2476.     AH = 19h
  2477.     DL = hard drive ID
  2478. Return: CF set on error
  2479.         AH = status code (see #00234 at AH=01h)
  2480.     CF clear if successful
  2481.         AH = disk type (03h = fixed disk)
  2482.         CX:DX = number of 512-byte sectors
  2483. Notes:    sends SCSI Read Capacity command to get number of logical blocks and
  2484.       adjusts the result for 512-byte sectors
  2485.     displays either "Error in Read Capacity Command" or "nnn Bytes per
  2486.       sector" (nnn=256 or 512, the only sizes supported in the translation
  2487.       code)
  2488.     should probably be called when a removable device has its media changed
  2489.     returns the same values as AH=15h
  2490.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  2491.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  2492. SeeAlso: AH=15h,AH=1Ah,INT 4F/AX=8100h
  2493. --------d-131A-------------------------------
  2494. INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
  2495.     AH = 1Ah
  2496.     AL = defect table entry count
  2497.     CL = format modifiers (see #00250)
  2498.     DL = drive (80h,81h)
  2499.     ES:BX -> defect table (see #00251), ignored if AL=00h
  2500. Return: CF set on error
  2501.     CF clear if successful
  2502.     AH = status (see #00234 at AH=01h)
  2503. Note:    if periodic interrupt selected, INT 15/AH=0Fh is called after each
  2504.       cylinder is formatted
  2505. SeeAlso: AH=07h,INT 15/AH=0Fh
  2506.  
  2507. Bitfields for ESDI format modifiers:
  2508. Bit(s)    Description    (Table 00250)
  2509.  4    generate periodic interrupt
  2510.  3    perform surface analysis
  2511.  2    update secondary defect map
  2512.  1    ignore secondary defect map
  2513.  0    ignore primary defect map
  2514.  
  2515. Format of defect table entry [array]:
  2516. Offset    Size    Description    (Table 00251)
  2517.  00h  3 BYTEs    relative sector address (little-endian)
  2518.  03h    BYTE    flags and defect count
  2519.         bit 7: last logical sector on track
  2520.         bit 6: first logical sector on track
  2521.         bit 5: last logical sector on cylinder
  2522.         bit 4: logical sectors are pushed onto next track
  2523.         bits 3-0: number of defects pushed from previous cylinder
  2524. --------d-131A-------------------------------
  2525. INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
  2526.     AH = 1Ah
  2527.     CH = track (bits 8,9 in high bits of CL)
  2528.     CL = sector (01h to number of sectors/track for drive)
  2529.     DH = head
  2530.     DL = hard drive ID
  2531. Return: CF set on error
  2532.     AH = status code (see #00234 at AH=01h)
  2533.     CX:DX = logical block number of last quickly-accessible block after
  2534.         given block
  2535. Notes:    sends SCSI Read Capacity command with the PMI bit set to obtain the
  2536.       logical block address of the last block after which a substantial
  2537.       delay in data transfer will be encountered (usually the last block
  2538.       on the current cylinder).  No translation to 512 byte sectors is
  2539.       performed on the result if data is stored on the disk in other than
  2540.       512 byte sectors.
  2541.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  2542.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  2543. SeeAlso: AH=15h,AH=19h"SCSI"
  2544. --------d-131B-------------------------------
  2545. INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
  2546.     AH = 1Bh
  2547.     AL = number of sectors to read
  2548.     DL = drive
  2549.     ES:BX -> buffer for manufacturing header (defect list)
  2550. Return: CF set on error
  2551.     CF clear if successful
  2552.     AH = status
  2553. Note:    manufacturing header format (Defect Map Record format) can be found
  2554.       in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
  2555.     the first sector read contains the manufacturing header with the number
  2556.       of defect entries and the beginning of the defect map; the remaining
  2557.       sectors contain the remainder of the defect map
  2558. --------d-131B-------------------------------
  2559. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
  2560.     AH = 1Bh
  2561.     DL = hard drive ID
  2562. Return: CF set on error
  2563.         AH = status code (see #00234 at AH=01h)
  2564.     CF clear if successful
  2565.         ES:BX -> SCSI disk information block (see #00252)
  2566. Notes:    also sets a non-resettable flag which prevents some controller messages
  2567.       from being displayed
  2568.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  2569.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  2570. SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI"
  2571.  
  2572. Format of Future Domain SCSI disk information block:
  2573. Offset    Size    Description    (Table 00252)
  2574.  00h    BYTE    drive physical information (see #00253)
  2575.  01h    WORD    translated number of cylinders
  2576.  03h    BYTE    translated number of heads
  2577.  04h    BYTE    translated number of sectors per track (17, 34, or 63)
  2578.  05h    BYTE    drive address
  2579.         bits 0-2: logical unit number
  2580.         bits 3-5: device number
  2581.  06h    BYTE    01h at initialization
  2582.  07h    BYTE    sense code byte 00h, or extended sense code byte 0Ch
  2583.  08h    BYTE    00h
  2584.  09h    BYTE    00h or extended sense code byte 02h (sense key)
  2585.  0Ah    BYTE    00h
  2586.  0Bh 10 BYTEs    copy of Command Descriptor Block (CDB) (see #03236,#03237)
  2587.  15h    DWORD    translated number of sectors on device
  2588.  
  2589. Bitfields for Future Domain SCSI device physical information:
  2590. Bit(s)    Description    (Table 00253)
  2591.  0    ???
  2592.  1    device uses parity
  2593.  2    256 bytes per sector instead of 512
  2594.  3    don't have capacity yet???
  2595.  4    disk is removable
  2596.  5    logical unit number is not present
  2597. --------d-131C-------------------------------
  2598. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
  2599.     AH = 1Ch
  2600.     DL = hard drive ID (any valid SCSI hard disk)
  2601. Return: CF set on error
  2602.         AH = status code (see #00234 at AH=01h)
  2603.     CF clear if successful
  2604.         ES:BX -> first byte of free RAM on controller
  2605. Notes:    the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
  2606.       to 1BFFh on-board the controller for storing drive information and
  2607.       controller status; ES:BX points to the first byte available for other
  2608.       uses
  2609.     ES contains the segment at which the controller resides; the
  2610.       controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
  2611. SeeAlso: AH=1Bh"SCSI"
  2612. --------d-131C-------------------------------
  2613. INT 13 U - ESDI FIXED DISK - ???
  2614.     AH = 1Ch
  2615.     AL = subfunction (01h-06h)
  2616.     DL = drive (80h,81h)
  2617.     ???
  2618. Return: ???
  2619. Note:    these functions perform a controller command 0612h without DMA
  2620. SeeAlso: AX=1C08h,PORT 3510h"ESDI"
  2621. --------d-131C08-----------------------------
  2622. INT 13 U - ESDI FIXED DISK - GET COMMAND COMPLETION STATUS
  2623.     AX = 1C08h
  2624.     DL = drive (80h,81h)
  2625.     ES:BX -> buffer for Command Complete Status Block (see #00254)
  2626. Return: CF set on error
  2627.     CF clear if successful
  2628.     AH = status (see #00234 at AH=01h)
  2629. SeeAlso: AX=1C09h,AX=1C0Ah,PORT 3510h"ESDI"
  2630.  
  2631. Format of ESDI Command Complete Status Block:
  2632. Offset    Size    Description    (Table 00254)
  2633.  00h    BYTE    07h
  2634.  01h    BYTE    size of block in words (07h)
  2635.  02h    BYTE    command error code (see #00255)
  2636.  03h    BYTE    command status code (see #00256)
  2637.  04h    BYTE    device error code, group 1 (see #00257)
  2638.  05h    BYTE    device error flags, group 2 (see #00258)
  2639.  06h    WORD    number of unprocessed sectors due to abnormal termination
  2640.  08h    DWORD    last Relative Sector Address processed by command
  2641.  0Ch    WORD    number of sectors corrected by ECC codes
  2642.  
  2643. (Table 00255)
  2644. Values for ESDI command error code:
  2645.  00h    successful
  2646.  01h    parameter invalid
  2647.  02h    unknown function
  2648.  03h    unsupported command
  2649.  04h    command cancelled
  2650.  05h    unknown function
  2651.  06h    controller diagnostics failed
  2652.  07h    formatting failed
  2653.  08h    format error in primary map
  2654.  09h    format error in secondary map
  2655.  0Ah    diagnostic failure during formatting
  2656.  0Bh    warning: secondary map too large during formatting
  2657.  0Ch    warning: non-zero defect
  2658.  0Dh    system checksum error during formatting
  2659.  0Eh    warning: incompatible device
  2660.  0Fh    warning: push table overflowed
  2661.  10h    warning: more than 15 sectors pushed to next cylinder
  2662.  11h    internal hardware error
  2663.  12h    warning: errors found while verifying sectors
  2664.  13h    invalid device
  2665.  FFh    device error
  2666.  
  2667. (Table 00256)
  2668. Values for ESDI command status code:
  2669.  01h    successful
  2670.  03h    successful after ECC
  2671.  05h    successful after retries
  2672.  06h    format partially completed
  2673.  07h    successful after ECC and retries
  2674.  08h    command completed with warning (see #00255)
  2675.  09h    abort complete
  2676.  0Ah    reset complete
  2677.  0Bh    data transfer ready (no status block)
  2678.  0Ch    command completed with failure (see #00257,#00258)
  2679.  0Dh    DMA error
  2680.  0Eh    command block error (see #00255)
  2681.  0Fh    bad attention code
  2682. SeeAlso: #00257
  2683.  
  2684. (Table 00257)
  2685. Values for ESDI device error code, group 1:
  2686.  00h    successful
  2687.  01h    seek fault detected by device
  2688.  02h    interface fault
  2689.  03h    sector ID not found
  2690.  04h    disk not formatted
  2691.  05h    unrecoverable ECC error
  2692.  06h    ECC error in sector ID
  2693.  07h    invalid relative sector address
  2694.  08h    timeout
  2695.  09h    sector defective
  2696.  0Ah    disk changed (removable media)
  2697.  0Bh    selection error
  2698.  0Ch    write protected (removable media)
  2699.  0Dh    write fault
  2700.  0Eh    read fault
  2701.  0Fh    no index or sector pulse
  2702.  10h    device not ready
  2703.  11h    seek error detected by adapter
  2704.  12h    bad format
  2705.  13h    volume overflow
  2706.  14h    data address mark not found
  2707.  15h    sector ID not found
  2708.  16h    missing device configuration data
  2709.  17h    first/last relative sector flags missing
  2710.  18h    track empty
  2711.  81h    timeout while waiting for stop
  2712.  82h    timeout while waiting for end of data transfer
  2713.  84h    stopped awaiting data transfer during formatting
  2714.  85h    timeout while waiting for head switch
  2715.  86h    timeout while awaiting DMA completion
  2716. SeeAlso: #00256,#00258
  2717.  
  2718. Bitfields for ESDI device error flags, group 2:
  2719. Bit(s)    Description    (Table 00258)
  2720.  7-5    unused
  2721.  4    ready
  2722.  3    selected
  2723.  2    write fault
  2724.  1    on track 0
  2725.  0    seek/command complete
  2726. SeeAlso: #00257
  2727. --------d-131C09-----------------------------
  2728. INT 13 U - ESDI FIXED DISK - GET DEVICE STATUS
  2729.     AX = 1C09h
  2730.     DL = drive (80h,81h)
  2731.     ES:BX -> buffer for Device Status Block (see #00259)
  2732. Return: CF set on error
  2733.     CF clear if successful
  2734.     AH = status (see #00234 at AH=01h)
  2735. SeeAlso: AX=1C08h,AX=1C0Ah,PORT 3510h"ESDI"
  2736.  
  2737. Format of ESDI Device Status Block:
  2738. Offset    Size    Description    (Table 00259)
  2739.  00h    BYTE    08h
  2740.  01h    BYTE    number of words in block (09h)
  2741.  02h    BYTE    error flags
  2742.  03h    BYTE    unused
  2743.  04h    BYTE    command error code (see #00255)
  2744.  05h    BYTE    command status code (see #00256)
  2745.  06h    WORD    ESDI standard status
  2746.  08h  5 WORDs    ESDI vendor-specific status codes
  2747. --------d-131C0A-----------------------------
  2748. INT 13 U - ESDI FIXED DISK - GET DEVICE CONFIGURATION
  2749.     AX = 1C0Ah
  2750.     DL = drive (80h,81h)
  2751.     ES:BX -> buffer for Drive Configuration Status Block (see #00260)
  2752. Return: CF set on error
  2753.     CF clear if successful
  2754.     AH = status (see #00234 at AH=01h)
  2755. Note:    device configuration format can be found in IBM ESDI Fixed Disk Drive
  2756.       Adapter/A Technical Reference
  2757. SeeAlso: AX=1C08h,AX=1C0Bh,AX=1C0Ch
  2758.  
  2759. Format of ESDI Drive Configuration Status Block:
  2760. Offset    Size    Description    (Table 00260)
  2761.  00h    BYTE    09h
  2762.  01h    BYTE    number of words in block (06h)
  2763.  02h    BYTE    flags
  2764.  03h    BYTE    number of spare sectors per cylinder
  2765.  04h    DWORD    total number of usable sectors
  2766.  08h    WORD    total number of cylinders
  2767.  0Ah    BYTE    tracks per cylinder
  2768.  0Bh    BYTE    sectors per track
  2769. --------d-131C0B-----------------------------
  2770. INT 13 U - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
  2771.     AX = 1C0Bh
  2772.     ES:BX -> buffer for Controller Configuration Status Block (see #00261)
  2773. Return: CF set on error
  2774.     CF clear if successful
  2775.     AH = status (see #00234 at AH=01h)
  2776. SeeAlso: AX=1C0Ch
  2777.  
  2778. Format of ESDI Controller Configuration Status Block:
  2779. Offset    Size    Description    (Table 00261)
  2780.  00h    BYTE    E9h
  2781.  01h    BYTE    number of words in block (06h)
  2782.  02h    WORD    unused (0000h)
  2783.  04h    DWORD    controller microcode revision level
  2784.  08h  2 WORDs    unused (0000h)
  2785. --------d-131C0C-----------------------------
  2786. INT 13 U - ESDI FIXED DISK - GET POS INFORMATION
  2787.     AX = 1C0Ch
  2788.     ES:BX -> buffer for POS Information Status Block (see #00262)
  2789. Return: CF set on error
  2790.     CF clear if successful
  2791.     AH = status (see #00234 at AH=01h)
  2792. SeeAlso: AX=1C0Bh
  2793.  
  2794. Format of ESDI POS Information Status Block:
  2795. Offset    Size    Description    (Table 00262)
  2796.  00h    BYTE    EAh
  2797.  01h    BYTE    number of words in block (05h)
  2798.  02h    WORD    magic value FFDDh
  2799.  04h    BYTE    POS register 3
  2800.  05h    BYTE    POS register 2
  2801.  06h    BYTE    POS register 5 (unused, FFh)
  2802.  07h    BYTE    POS register 4 (unused, FFh)
  2803.  08h    BYTE    POS register 7 (unused, FFh)
  2804.  09h    BYTE    POS register 6 (unused, FFh)
  2805. --------d-131C0D-----------------------------
  2806. INT 13 U - ESDI FIXED DISK - ???
  2807.     AX = 1C0Dh
  2808.     DL = drive (80h,81h)
  2809.     ???
  2810. Return: ???
  2811. Note:    invokes controller command 0614h without DMA
  2812. SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI"
  2813. --------d-131C0E-----------------------------
  2814. INT 13 U - ESDI FIXED DISK - TRANSLATE RBA TO ABA
  2815.     AX = 1C0Eh
  2816.     CH = low 8 bits of cylinder number
  2817.     CL = sector number, high two bits of cylinder number in bits 6 and 7
  2818.     DH = head number
  2819.     DL = drive number (80h,81h)
  2820.     ES:BX -> ABA number
  2821. Return: CF set on error
  2822.     CF clear if successful
  2823.     AH = status (see #00234 at AH=01h)
  2824. Note:    ABA (absolute block address) format can be found in IBM ESDI Adapter
  2825.       Technical Reference by using its Device Configuration Status Block
  2826. SeeAlso: AX=1C08h,AX=1C0Fh,PORT 3510h"ESDI"
  2827. --------d-131C0F-----------------------------
  2828. INT 13 U - ESDI FIXED DISK - ???
  2829.     AX = 1C0Fh
  2830.     DL = drive (80h,81h)
  2831.     ???
  2832. Return: ???
  2833. Note:    invokes controller command 0614h without DMA
  2834. SeeAlso: AH=1Ch"ESDI",AX=1C0Dh,AX=1C12h,PORT 3510h"ESDI"
  2835. --------d-131C12-----------------------------
  2836. INT 13 U - ESDI FIXED DISK - ???
  2837.     AX = 1C12h
  2838.     DL = drive (80h,81h)
  2839.     ???
  2840. Return: ???
  2841. Note:    invokes controller command 0612h without DMA
  2842. SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI"
  2843. --------c-131D-------------------------------
  2844. INT 13 - IBMCACHE.SYS - CACHE STATUS
  2845.     AH = 1Dh
  2846.     AL = subfunction
  2847.         01h get status record
  2848.         DL = drive???
  2849.         Return: ES:BX -> status record (see #00263)
  2850.             CF set on error
  2851.                 AH = error code
  2852.         02h set cache status
  2853.         ES:BX -> status record (see #00263)
  2854.         DL = drive???
  2855.         Return: CF set on error
  2856.  
  2857. Format of IBMCACHE.SYS status record:
  2858. Offset    Size    Description    (Table 00263)
  2859.  00h    DWORD    total number of read requests
  2860.  04h    DWORD    total number of hits
  2861.  08h    DWORD    number of physical disk reads
  2862.  0Ch    DWORD    total number of sectors requested by physical disk reads
  2863.  10h  6 BYTEs    ???
  2864.  16h    DWORD    pointer to start of error list (see #00264)
  2865.  1Ah    DWORD    pointer to end of error list
  2866.  1Eh    WORD    ???
  2867.  20h    BYTE    using extended memory if nonzero
  2868.  21h    BYTE    ???
  2869.  22h  4 BYTEs    ASCII version number
  2870.  26h    WORD    cache size in KB
  2871.  28h    WORD    sectors per page
  2872.  
  2873. Format of IBMCACHE.SYS error list:
  2874. Offset    Size    Description    (Table 00264)
  2875.  00h    DWORD    relative block address of bad page
  2876.  04h    BYTE    drive
  2877.  05h    BYTE    sector bit-map
  2878.  06h    WORD    next error
  2879. --------d-131F-------------------------------
  2880. INT 13 - SyQuest - DOOR LATCH/DOOR BUTTON DETECT
  2881.     AH = 1Fh
  2882.     AL = subfunction
  2883.         00h allow media removal
  2884.         01h prevent media removal (lock door)
  2885.     DL = drive ID (bit 7 set for hard disks)
  2886. Return: CF clear if successful
  2887.         AH = 00h
  2888.     CF set on error
  2889.         AH = error code
  2890.         00h successful
  2891.         01h invalid function request
  2892.         80h timeout
  2893.         DDh media change requested
  2894. SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=59h"SyQuest"
  2895. --------d-1320-------------------------------
  2896. INT 13 - DISK - ??? (Western Digital "Super BIOS")
  2897.     AH = 20h
  2898.     ???
  2899. Return: ???
  2900. Notes:    returns some kind of status related to whether the drive contains its
  2901.       default media type
  2902.     QEMM v6.00 calls INT 13/AX=2000h/DL=81h in some cases
  2903. --------b-1320-------------------------------
  2904. INT 13 U - Compaq, ATAPI Removable Media Device - GET CURRENT MEDIA FORMAT
  2905.     AH = 20h
  2906.     DL = drive number (00h,01h)
  2907. Return: CF clear if successful
  2908.         AL = media type (see #00265)
  2909.         AH = 00h
  2910.     CF set on error
  2911.         AH = error code
  2912.         01h invalid request
  2913.         30h drive does not support media sense
  2914.         31h no such drive / media not present
  2915.         32h non-default media / drive does not supporte media type
  2916. Notes:    this function is supported by the 3/8/93 ROM BIOS, but only partially
  2917.       (AL is always 00h when successful) by the 8/3/93 version
  2918.     this function is also supported by some recent versions of the Phoenix
  2919.       486 BIOS
  2920.  
  2921. (Table 00265)
  2922. Values for Compaq/ATAPI diskette media type:
  2923.  03h    720K  (1M unformatted)
  2924.  04h    1.44M (2M unformatted)
  2925.  06h    2.88M (4M unformatted)
  2926.  0Ch    360K
  2927.  0Dh    1.2M
  2928.  0Eh    Toshiba 3mode
  2929.  0Fh    NEC 3mode (1024-byte sectors)
  2930.  10h    ATAPI Removable Media Device
  2931. --------c-1320-------------------------------
  2932. INT 13 u - QUICKCACHE II v4.20 - DISMOUNT
  2933.     AH = 20h
  2934.     AL = drive (00h = A:, etc. or 7Fh for all removable drives???
  2935.                    or FFh for all drives)
  2936. Return: AX = status (0000h successful)
  2937. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  2938.       Associates, Inc.
  2939. Desc:    flush any dirty buffers for the specified drive(s) and then discard
  2940.       those sector buffers
  2941. SeeAlso: AH=21h"QUICKCACHE",AH=22h"QUICKCACHE",AH=28h
  2942. --------d-1321-------------------------------
  2943. INT 13 - HARD DISK - PS/1 and newer PS/2 - READ MULTIPLE DISK SECTORS
  2944.     AH = 21h
  2945.     AL = number of sectors to write
  2946.     CH = low byte of 12-bit cylinder number
  2947.     CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
  2948.     DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
  2949.     DL = drive number (80h,81h)
  2950.     ES:BX -> buffer for data to be read
  2951. Return: CF clear if successful
  2952.         ES:BX buffer filled
  2953.     CF set on error
  2954.     AH = status (see #00234 at AH=01h)
  2955. Desc:    read from the disk using the Multiple Block mode available on newer
  2956.       IDE drives and some hard disk controllers, which generates an
  2957.       interrupt only after the end of transferring a group of sectors
  2958.       rather than after each sector
  2959. Notes:    must call AH=24h"PS/1" before using this function
  2960.     input values in CL and DH are not range-checked
  2961.     the byte at address 0040h:0074h is set to the status of the operation
  2962. SeeAlso: AH=02h,AH=22h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
  2963. --------c-1321-------------------------------
  2964. INT 13 u - QUICKCACHE II v4.20 - FLUSH CACHE
  2965.     AH = 21h
  2966. Return: AX = status (0000h successful)
  2967. Desc:    immediately write all dirty sectors back to disk
  2968. SeeAlso: AH=25h"QUICKCACHE",AH=2Eh,AH=2Fh
  2969. --------d-1322-------------------------------
  2970. INT 13 - HARD DISK - PS/1 and newer PS/2 - WRITE MULTIPLE DISK SECTORS
  2971.     AH = 22h
  2972.     AL = number of sectors to write
  2973.     CH = low byte of 12-bit cylinder number
  2974.     CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
  2975.     DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
  2976.     DL = drive number (80h,81h)
  2977.     ES:BX -> buffer containing data to be written
  2978. Return: CF clear if successful
  2979.     CF set on error
  2980.     AH = status (see #00234 at AH=01h)
  2981. Desc:    write to the disk using the Multiple Block mode available on newer
  2982.       IDE drives and some hard disk controllers, which generates an
  2983.       interrupt only after the end of transferring a group of sectors
  2984.       rather than after each sector
  2985. Notes:    must call AH=24h"PS/1" before using this function
  2986.     input values in CL and DH are not range-checked
  2987.     the byte at address 0040h:0074h is set to the status of the operation
  2988. SeeAlso: AH=03h,AH=21h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
  2989. --------c-1322-------------------------------
  2990. INT 13 u - QUICKCACHE II v4.20 - ENABLE/DISABLE CACHE
  2991.     AH = 22h
  2992.     AL = new state (00h disabled, 01h enabled)
  2993. Return: AX = status (0000h successful)
  2994. Note:    enables/disables caching of all drives
  2995. SeeAlso: AH=2Ch,AH=2Dh,AH=32h,AH=33h,AH=A3h,AH=A4h
  2996. --------d-1323-------------------------------
  2997. INT 13 U - HARD DISK - PS/1 and newer PS/2 - SET CONTROLLER FEATURES REGISTER
  2998.     AH = 23h
  2999.     AL = feature number (see #00266)
  3000.     DL = drive number (80h,81h)
  3001.     ???
  3002. Return: CF clear if successful
  3003.     CF set on error
  3004.     AH = status (see #00234 at AH=01h)
  3005. SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=24h"PS/1",AH=25h"PS/1"
  3006.  
  3007. (Table 00266)
  3008. Values for PS/1 hard disk feature number:
  3009.  01h    select 8-bit data transfers instead of 16-bit
  3010.  02h    enable write cache
  3011.  22h    Write Same, user-specified area
  3012.  33h    disable retries
  3013.  44h    set number of ECC bytes for read long/write long (see AH=0Ah,AH=0Bh)
  3014.  54h    set cache segments
  3015.  55h    disable lookahead
  3016.  66h    disable reverting to power-on defaults
  3017.  77h    disable error correctioni
  3018.  81h    select 16-bit data transfers (default)
  3019.  82h    disable write cache
  3020.  88h    enable error correction (default)
  3021.  99h    enable retries (default)
  3022.  AAh    enable lookahead
  3023.  BBh    set ECC length for read long/write long to four bytes
  3024.  CCh    enable reverting to power-on defaults
  3025.  DDh    Write Same, entire disk
  3026. SeeAlso: #P0535
  3027. --------c-1323-------------------------------
  3028. INT 13 U - QUICKCACHE II v4.20 - GET ??? ADDRESS
  3029.     AH = 23h
  3030. Return: AX = status (0000h successful)
  3031.     ES = segment of ??? data
  3032. --------d-1324-------------------------------
  3033. INT 13 - HARD DISK - PS/1 and newer PS/2 - SET MULTIPLE MODE
  3034.     AH = 24h
  3035.     AL = number of sectors per block (2,4,8,16)
  3036.     DL = drive number (80h,81h)
  3037. Return: CF clear if successful
  3038.     CF set onerror
  3039.     AH = status (see #00234 at AH=01h)
  3040. Desc:    specify how many sectors the controller should transfer as a group
  3041.       between operation-complete interrupts when using the Read Multiple
  3042.       and Write Multiple functions (AH=21h,AH=22h)
  3043. Notes:    set the number of sectors to 0 to disable multiple-transfer mode
  3044.     the maximum value for the block size depends on the fixed disk
  3045.       drive type.  The value is stored in byte 15h of the fixed disk
  3046.       drive parameter table that is created by POST.
  3047.     the byte at address 0040h:0074h is set to status of operation.
  3048. SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=23h"PS/1",AH=25h"PS/1"
  3049. --------c-1324-------------------------------
  3050. INT 13 u - QUICKCACHE II v4.20 - SET SECTORS
  3051.     AH = 24h
  3052.     BX = new number of sector buffers in cache
  3053. Return: AX = status
  3054.         0000h successful
  3055.         0001h failed--size adjusted
  3056.         8000h cache cannot be resized while enabled
  3057. SeeAlso: AH=36h
  3058. --------d-1325-------------------------------
  3059. INT 13 - HARD DISK - PS/1 and newer PS/2 - IDENTIFY DRIVE
  3060.     AH = 25h
  3061.     DL = drive number (80h,81h)
  3062.     ES:BX-> 512 byte buffer for reply packet
  3063. Return: CF clear if successful
  3064.     CF set on error
  3065.     AH = status (see #00234 at AH=01h)
  3066.     buffer filled with ATA/IDE-style drive information block (see #00267)
  3067. Desc:    retrieves the 256 words of drive data stored on an IDE hard disk
  3068. Notes:    the byte at address 0040h:0074h is set to the status of the operation
  3069.     IBM officially classifies this function as optional
  3070. SeeAlso: AH=23h"PS/1"
  3071.  
  3072. Format of drive information block:
  3073. Offset    Size    Description    (Table 00267)
  3074.  00h    WORD    general drive configuration (see #00268)
  3075.  02h    WORD    number of cylinders
  3076.  04h    WORD    reserved
  3077.  06h    WORD    number of heads
  3078.  08h    WORD    number of unformatted bytes per track
  3079.  0Ah    WORD    number of unformatted bytes per sector
  3080.  0Ch    WORD    number of sectors per track
  3081.  0Eh  6 BYTEs    vendor unique
  3082.  14h 20 BYTEs    serial number in ASCII, 0000h=not specified)
  3083.  28h    WORD    buffer type
  3084.  2Ah    WORD    buffer size in 512 byte increments (0000h=not specified)
  3085.  2Ch    WORD    number of ECC bytes passed on Read/Write Long cmds
  3086.         0000h = not specified
  3087.  2Eh  8 BYTEs    firmware revision in ASCII, 0000h=not specified
  3088.  36h 40 BYTEs    model number in ASCII, 0000h=not specified
  3089.  5Eh    WORD    bits 15-8  Vendor Unique
  3090.         bits 7-0  00h = Read/Write Multiple commands not implemented
  3091.               xxh = Maximum number of sectors that can be
  3092.               transferred per interrupt on Read and Write
  3093.               Multiple commands
  3094.  60h    WORD    0000h = cannot perform doubleword I/O
  3095.         0001h = can perform doubleword I/O
  3096.  62h    WORD    capabilities
  3097.         bit 15-9  0=reserved
  3098.         bit 8  1=DMA Supported
  3099.         bit 7-0     Vendor Unique
  3100.  64h    WORD    reserved
  3101.  66h    WORD    bits 15-8 PIO data transfer cycle timing mode
  3102.         bits 7-0  Vendor Unique
  3103.  68h    WORD    bits 15-8 DMA data transfer cycle timing mode
  3104.         bits 7-0  Vendor Unique
  3105.  6Ah    WORD    bits 15-1 reserved
  3106.         bit 0    1=the fields reported in tranlation mode are valid
  3107.             0=the fields reported in translation mode may be valid
  3108.  6Ch    WORD    number of current cylinders
  3109.  6Eh    WORD    number of current heads
  3110.  70h    WORD    number of current sectors per track
  3111.  72h    DWORD    current capacity in sectors
  3112.  76h    WORD    reserved
  3113.  78h 136 BYTEs    not defined by ATA spec 2.6
  3114. 100h 64 BYTEs    vendor unique
  3115. 140h 96 BYTEs    reserved
  3116. Note:    the above description is as in the ATA (AT Attachment) Specification.
  3117. SeeAlso: #P0516
  3118.  
  3119. Bitfields for general drive configuration:
  3120. Bit(s)    Description    (Table 00268)
  3121.  15    0   reserved for non-magnetic drives
  3122.  14    format speed tolerance gap required
  3123.  13    track offset option available
  3124.  12    data strobe offset option available
  3125.  11    rotational speed tolerance is > 0.5%
  3126.  10    disk transfer rate > 10 Mbs
  3127.  9    disk transfer rate > 5Mbs but <= 10Mbs
  3128.  8    disk transfer rate <= 5Mbs
  3129.  7    removable cartridge drive
  3130.  6    fixed drive
  3131.  5    spindle motor control option implemented
  3132.  4    head switch time > 15 usec
  3133.  3    not MFM encoded
  3134.  2    soft sectored
  3135.  1    hard sectored
  3136.  0    reserved (0)
  3137. --------c-1325-------------------------------
  3138. INT 13 u - QUICKCACHE II v4.20 - SET FLUSH INTERVAL
  3139.     AH = 25h
  3140.     BX = interval
  3141. Return: AX = status (0000h successful)
  3142. Desc:    specify how often the cache should write dirty buffers to disk when
  3143.       buffered writes are enabled
  3144. SeeAlso: AH=21h"QUICKCACHE",AH=2Ch,AH=2Eh
  3145. --------c-1326-------------------------------
  3146. INT 13 U - QUICKCACHE II v4.20 - UNINSTALL
  3147.     AH = 26h
  3148. Return: AX = status
  3149.         0000h successful
  3150.         0001h-00FFh interrupt vector which was hooked by another TSR
  3151. SeeAlso: AH=27h
  3152. --------c-1327--BX0000-----------------------
  3153. INT 13 u - QUICKCACHE II v4.20 - INSTALLATION CHECK
  3154.     AH = 27h
  3155.     BX = 0000h
  3156. Return: AX = 0000h if installed
  3157.     BX nonzero if installed
  3158.         BH = major version
  3159.         BL = binary minor version
  3160. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  3161.       Associates, Inc.
  3162. SeeAlso: AH=26h,AH=A0h,INT 16/AX=FFA5h/CX=1111h
  3163. --------c-1328-------------------------------
  3164. INT 13 U - QUICKCACHE II v4.20 - SET AUTOMATIC DISMOUNT
  3165.     AH = 28h
  3166.     AL = new state (00h disabled, 01h enabled)
  3167. Return: AX = status (0000h successful)
  3168. SeeAlso: AH=20h"QUICKCACHE"
  3169. --------c-1329-------------------------------
  3170. INT 13 U - QUICKCACHE II v4.20 - NOP
  3171.     AH = 29h
  3172. Return: AX = 0000h
  3173. --------c-132A-------------------------------
  3174. INT 13 u - QUICKCACHE II v4.20 - SET BUFFER SIZE
  3175.     AH = 2Ah
  3176.     AL = buffer size (1-30)
  3177. Return: AX = status (0000h successful)
  3178. Desc:    specify the number of cache sector buffers to dedicate to buffered read
  3179.       and write operations
  3180. SeeAlso: AH=2Ch,AH=2Dh,AH=39h,AH=3Ah
  3181. --------c-132B-------------------------------
  3182. INT 13 U - QUICKCACHE II v4.20 - DRIVE ACCESS SOUNDS
  3183.     AH = 2Bh
  3184.     AL = new state (00h disabled, 01h enabled)
  3185. Return: AX = status (0000h successful)
  3186. --------c-132C-------------------------------
  3187. INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED WRITES
  3188.     AH = 2Ch
  3189.     AL = new state (00h disabled, 01h enabled)
  3190. Return: AX = status (0000h successful)
  3191. Desc:    specify whether the cache should delay disk writes
  3192. Note:    this function enables or disables delayed writes for all drives; use
  3193.       AH=38h to change a single drive
  3194. SeeAlso: AH=25h"QUICKCACHE",AH=2Dh,AH=2Eh,AH=38h
  3195. --------c-132D-------------------------------
  3196. INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED READ
  3197.     AH = 2Dh
  3198.     AL = new state (00h disabled, 01h enabled)
  3199. Return: AX = status (0000h successful)
  3200. Desc:    specify whether the cache should attempt to read ahead of actual
  3201.       requests
  3202. Note:    this function enables or disables read-ahead for all drives; use AH=37h
  3203.       to change a single drive
  3204. SeeAlso: AH=2Ch,AH=37h
  3205. --------c-132E-------------------------------
  3206. INT 13 u - QUICKCACHE II v4.20 - SET FLUSH COUNT
  3207.     AH = 2Eh
  3208.     BX = flush count
  3209. Return: AX = status (0000h successful)
  3210. Desc:    specify how many dirty sectors the cache should write after each flush
  3211.       interval (see AH=25h"QUICKCACHE") when buffered writes are enabled
  3212. SeeAlso: AH=21h"QUICKCACHE",AH=25h"QUICKCACHE",AH=2Ch
  3213. --------c-132F-------------------------------
  3214. INT 13 - QUICKCACHE II v4.20 - FORCE IMMEDIATE INCREMENTAL FLUSH
  3215.     AH = 2Fh
  3216. Return: AX = status (0000h successful)
  3217. Desc:    immediately flush up to "flushcount" dirty sectors to disk as if the
  3218.       flush interval had expired
  3219. SeeAlso: AH=21h"QUICKCACHE"
  3220. --------c-1330-------------------------------
  3221. INT 13 u - QUICKCACHE II v4.20 - GET INFO
  3222.     AH = 30h
  3223.     AL = what to get
  3224.         00h system info (see #00269)
  3225.         01h drive info (see #00270)
  3226.         02h access frequency (array of 30 words)
  3227.         03h drive index
  3228.         (array of 32 bytes indicating BIOS drive for DOS drive)
  3229.     DS:DX -> buffer for info
  3230. Return: AX = status (0000h successful, 8000h invalid info specifier)
  3231. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  3232.       Associates, Inc.
  3233.  
  3234. Format of QUICKCACHE II system info:
  3235. Offset    Size    Description    (Table 00269)
  3236.  00h    BYTE    flag: cache enabled
  3237.  01h    BYTE    flag: buffered writes enabled
  3238.  02h    BYTE    flag: buffered reads enabled
  3239.  03h    BYTE    flag: sounds enabled
  3240.  04h    BYTE    flag: autodismount enabled
  3241.  05h    BYTE    ???
  3242.  06h    BYTE    flag: ???
  3243.  07h    BYTE    flag: ???
  3244.  08h    BYTE    flag: "em_assigned"
  3245.  09h    BYTE    flag: emulated EMS
  3246.  0Ah    BYTE    single sector bonus
  3247.  0Bh    BYTE    "sticky_max"
  3248.  0Ch    BYTE    write sector bonus
  3249.  0Dh    BYTE    bonus threshold
  3250.  0Eh    WORD    flush interval
  3251.  10h    WORD    flush count
  3252.  12h    WORD    reserve pool size
  3253.  14h    WORD    remaining space in reserve pool
  3254.  16h    WORD    required free memory
  3255.  18h    WORD    total cache sectors
  3256.  1Ah    WORD    dirty cache sectors
  3257.  1Ch    BYTE    trace buffer size
  3258.  1Dh    BYTE    reserved (padding)
  3259. SeeAlso: #00270
  3260.  
  3261. Format of QUICKCACHE II drive info [16-element array, one element]:
  3262. Offset    Size    Description    (Table 00270)
  3263.  00h    BYTE    DOS drive number
  3264.  01h    BYTE    BIOS drive number
  3265.  02h    BYTE    maximum sector number
  3266.  03h    BYTE    maximum head number
  3267.  04h    BYTE    read buffer size
  3268.  05h    BYTE    write buffer size
  3269.  06h    BYTE    last status
  3270.  07h    BYTE    flag: enabled
  3271.  08h    BYTE    flag: buffered write enabled
  3272.  09h    BYTE    flag: buffered read enabled
  3273.  0Ah    BYTE    flag: in use (drive info is valid)
  3274.  0Bh    BYTE    flag: cylinder flush
  3275.  0Ch    BYTE    reserved (padding)
  3276.  0Dh    BYTE    sectors per track
  3277.  0Eh    WORD    sector size
  3278.  10h    WORD    sectors assigned
  3279.  12h    WORD    dirty sectors
  3280.  14h    WORD    reserved sectors
  3281.  16h    WORD    number of read errors
  3282.  18h    WORD    number of write errors
  3283.  1Ah    DWORD    "rio_count"
  3284.  1Eh    DWORD    number of cache misses
  3285.  22h    DWORD    "wio_count"
  3286.  26h    DWORD    "dio_count"
  3287. SeeAlso: #00269
  3288. --------c-1331-------------------------------
  3289. INT 13 U - QUICKCACHE II v4.20 - RESERVE MEMORY
  3290.     AH = 31h
  3291.     BX = number of paragraphs of conventional memory to reserve for apps
  3292. Return: AX = status (0000h successful)
  3293. --------c-1332-------------------------------
  3294. INT 13 U - QUICKCACHE II v4.20 - ENABLE CACHING FOR SPECIFIC DRIVE
  3295.     AH = 32h
  3296.     AL = drive number (00h=A:)
  3297. Return: AX = status (0000h successful)
  3298. SeeAlso: AH=22h"QUICKCACHE",AH=33h
  3299. --------c-1333-------------------------------
  3300. INT 13 U - QUICKCACHE II v4.20 - DISABLE CACHING FOR SPECIFIC DRIVE
  3301.     AH = 33h
  3302.     AL = drive number (00h=A:)
  3303. Return: AX = status (0000h successful)
  3304. SeeAlso: AH=22h"QUICKCACHE",AH=32h
  3305. --------c-1334-------------------------------
  3306. INT 13 U - QUICKCACHE II v4.20 - SECTOR LOCKING
  3307.     AH = 34h
  3308.     AL = function
  3309.         00h end sector locking/unlocking
  3310.         01h lock all accessed sectors into cache
  3311.         02h unlock all accessed sectors and discard from cache
  3312. Return: AX = status (0000h successful)
  3313. SeeAlso: AH=20h"QUICKCACHE",AH=35h
  3314. --------c-1335-------------------------------
  3315. INT 13 U - QUICKCACHE II v4.20 - SET LOCK POOL SIZE
  3316.     AH = 35h
  3317.     BX = number of sectors in lock pool
  3318. Return: AX = status (0000h successful)
  3319. Desc:    specify the number of cache sector buffers which may be dedicated to
  3320.       data locked into the cache
  3321. SeeAlso: AH=34h
  3322. --------c-1336-------------------------------
  3323. INT 13 U - QUICKCACHE II v4.20 - SET TRACE BUFFER SIZE
  3324.     AH = 36h
  3325.     AL = new size of trace buffer
  3326. Return: AX = status (0000h successful)
  3327. Note:    called with AL=05h during an INT 13/AH=24h"QUICKCACHE" call
  3328. SeeAlso: AH=24h"QUICKCACHE"
  3329. --------c-1337-------------------------------
  3330. INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED READS FOR SPECIFIC DRIVE
  3331.     AH = 37h
  3332.     AL = new state (00h disabled, else enabled)
  3333.     DL = drive number (00h = A:)
  3334. Return: AX = status (0000h successful)
  3335. SeeAlso: AH=2Dh,AH=38h
  3336. --------c-1338-------------------------------
  3337. INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED WRITES FOR SPECIFIC DRIVE
  3338.     AH = 38h
  3339.     AL = new state (00h disabled, else enabled)
  3340.     DL = drive number (00h = A:)
  3341. Return: AX = status (0000h successful)
  3342. SeeAlso: AH=2Ch,AH=37h
  3343. --------c-1339-------------------------------
  3344. INT 13 U - QUICKCACHE II v4.20 - SET READ BUFFER SIZE FOR SPECIFIC DRIVE
  3345.     AH = 39h
  3346.     AL = new size of read buffer
  3347.     DL = drive number (00h = A:)
  3348. Return: AX = status (0000h successful)
  3349. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  3350.       Associates, Inc.
  3351. SeeAlso: AH=2Ah,AH=3Ah
  3352. --------c-133A-------------------------------
  3353. INT 13 U - QUICKCACHE II v4.20 - SET WRITE BUFFER SIZE FOR SPECIFIC DRIVE
  3354.     AH = 3Ah
  3355.     AL = new size of write buffer
  3356.     DL = drive number (00h = A:)
  3357. Return: AX = status (0000h successful)
  3358. SeeAlso: AH=2Ah,AH=39h
  3359. --------c-133B-------------------------------
  3360. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
  3361.     AH = 3Bh
  3362.     AL = new state of ??? (01h enabled, else disabled)
  3363. Return: AX = status (0000h successful)
  3364. Note:    is affected by the flag reported at offset 05h of the system info
  3365.       returned by AH=30h, and sets the flag at offset 06h
  3366. SeeAlso: AH=3Ch
  3367. --------c-133C-------------------------------
  3368. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
  3369.     AH = 3Ch
  3370.     AL = new state of ??? (01h enabled, else disabled)
  3371. Return: AX = status (0000h successful)
  3372. Note:    is affected by the flag reported at offset 05h of the system info
  3373.       returned by AH=30h, and sets the flag at offset 07h
  3374. SeeAlso: AH=3Bh
  3375. --------c-133D-------------------------------
  3376. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE CYLINDER FLUSH FOR DRIVE
  3377.     AH = 3Dh
  3378.     AL = new state (01h enabled, else disabled)
  3379.     DL = drive number (00h = A:)
  3380. Return: AX = status (0000h successful)
  3381. --------c-133E-------------------------------
  3382. INT 13 U - QUICKCACHE II v4.20 - SET SINGLE-SECTOR BONUS
  3383.     AH = 3Eh
  3384.     AL = new value for bonus
  3385. Return: AX = status (0000h successful)
  3386. Desc:    specify the bonus score to give to single-sector transfers in order to
  3387.       keep those sectors in the cache longer
  3388. --------c-133F-------------------------------
  3389. INT 13 U - QUICKCACHE II v4.20 - SET BONUS THRESHOLD
  3390.     AH = 3Fh
  3391.     AL = new value for bonus threshold
  3392. Return: AX = status (0000h successful)
  3393. --------c-1340-------------------------------
  3394. INT 13 U - QUICKCACHE II v4.20 - SET "sticky_max"
  3395.     AH = 40h
  3396.     AL = new value for "sticky_max"
  3397. Return: AX = status (0000h successful)
  3398. SeeAlso: AH=41h"QUICKCACHE"
  3399. --------d-1341--BX55AA-----------------------
  3400. INT 13 - IBM/MS INT 13 Extensions - INSTALLATION CHECK
  3401.     AH = 41h
  3402.     BX = 55AAh
  3403.     DL = drive (80h-FFh)
  3404. Return: CF set on error (extensions not supported)
  3405.         AH = 01h (invalid function)
  3406.     CF clear if successful
  3407.         BX = AA55h if installed
  3408.         AH = major version of extensions
  3409.         01h = 1.x
  3410.         20h = 2.0 / EDD-1.0
  3411.         21h = 2.1 / EDD-1.1
  3412.         30h = EDD-3.0
  3413.         AL = internal use
  3414.         CX = API subset support bitmap (see #00271)
  3415.         DH = extension version (v2.0+ ??? -- not present in 1.x)
  3416. Note:    the Phoenix Enhanced Disk Drive Specification v1.0 uses version 2.0 of
  3417.       the INT 13 Extensions API
  3418. SeeAlso: AH=42h"INT 13 Ext",AH=48h"INT 13 Ext"
  3419.  
  3420. Bitfields for IBM/MS INT 13 Extensions API support bitmap:
  3421. Bit(s)    Description    (Table 00271)
  3422.  0    extended disk access functions (AH=42h-44h,47h,48h) supported
  3423.  1    removable drive controller functions (AH=45h,46h,48h,49h,INT 15/AH=52h)
  3424.       supported
  3425.  2    enhanced disk drive (EDD) functions (AH=48h,AH=4Eh) supported
  3426.     extended drive parameter table is valid (see #00273,#00278)
  3427.  3-15    reserved (0)
  3428. --------c-1341-------------------------------
  3429. INT 13 U - QUICKCACHE II v4.20 - SAVE/RESTORE ???
  3430.     AH = 41h
  3431.     AL = direction
  3432.         01h save to file
  3433.         else restore from file
  3434.     ES:DI -> 1024-byte buffer for ???
  3435. Return: AX = status (0000h successful, 8000h failed)
  3436. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  3437.       Associates, Inc.
  3438. SeeAlso: AH=40h"QUICKCACHE"
  3439. --------d-1342-------------------------------
  3440. INT 13 - IBM/MS INT 13 Extensions - EXTENDED READ
  3441.     AH = 42h
  3442.     DL = drive number
  3443.     DS:SI -> disk address packet (see #00272)
  3444. Return: CF clear if successful
  3445.         AH = 00h
  3446.     CF set on error
  3447.         AH = error code (see #00234)
  3448.         disk address packet's block count field set to number of blocks
  3449.           successfully transferred
  3450. SeeAlso: AH=02h,AH=41h"INT 13 Ext",AH=43h"INT 13 Ext"
  3451.  
  3452. Format of disk address packet:
  3453. Offset    Size    Description    (Table 00272)
  3454.  00h    BYTE    10h (size of packet)
  3455.  01h    BYTE    reserved (0)
  3456.  02h    WORD    number of blocks to transfer (max 007Fh for Phoenix EDD)
  3457.  04h    DWORD    -> transfer buffer
  3458.  08h    QWORD    starting absolute block number
  3459.         (for non-LBA devices, compute as
  3460.           (Cylinder*NumHeads + SelectedHead) * SectorPerTrack +
  3461.           SelectedSector - 1
  3462. --------N-134257DX1234-----------------------
  3463. INT 13 U - Beame&Whiteside BWLPD - INSTALLATION CHECK
  3464.     AX = 4257h ("BW")
  3465.     DX = 1234h
  3466. Return: BX = 414Ch if installed
  3467. Program: BWLPD is the printer daemon from the BW-NFS package
  3468. SeeAlso: INT 62/AH=00h"ETHDEV"
  3469. --------d-1343-------------------------------
  3470. INT 13 - IBM/MS INT 13 Extensions - EXTENDED WRITE
  3471.     AH = 43h
  3472.     AL = write flags
  3473.        ---v1.0,2.0---
  3474.        bit 0: verify write
  3475.        bits 7-1 reserved (0)
  3476.        ---v2.1+ ---
  3477.        00h,01h write without verify
  3478.        02h write with verify
  3479.     DL = drive number
  3480.     DS:SI -> disk address packet (see #00272)
  3481. Return: CF clear if successful
  3482.         AH = 00h
  3483.     CF set on error
  3484.         AH = error code (see #00234)
  3485.         disk address packet's block count field set to number of blocks
  3486.           successfully transferred
  3487. Note:    the BIOS returns CF set/AH=01h (invalid function) if verify is
  3488.       requested but not supported
  3489. SeeAlso: AH=03h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=44h
  3490. --------d-1344-------------------------------
  3491. INT 13 - IBM/MS INT 13 Extensions - VERIFY SECTORS
  3492.     AH = 44h
  3493.     DL = drive number
  3494.     DS:SI -> disk address packet (see #00272)
  3495. Return: CF clear if successful
  3496.         AH = 00h
  3497.     CF set on error
  3498.         AH = error code (see #00234)
  3499.         disk address packet's block count field set to number of blocks
  3500.           successfully verified
  3501. SeeAlso: AH=04h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=47h
  3502. --------d-1345-------------------------------
  3503. INT 13 - IBM/MS INT 13 Extensions - LOCK/UNLOCK DRIVE
  3504.     AH = 45h
  3505.     AL = operation
  3506.         00h lock media in drive
  3507.         01h unlock media
  3508.         02h check lock status
  3509.     DL = drive number
  3510. Return: CF clear if successful
  3511.         AH = 00h
  3512.         AL = lock state (00h = unlocked)
  3513.     CF set on error
  3514.         AH = error code (see #00234)
  3515. Notes:    this function is required to be supported for any removable drives
  3516.       numbered 80h or higher
  3517.     up to 255 locks may be placed on a drive, and the media will not
  3518.       be physically unlocked until all locks have been removed
  3519. SeeAlso: AH=41h"INT 13 Ext",AH=46h,AH=49h,INT 15/AH=52h"INT 13 Extensions"
  3520. --------d-1346-------------------------------
  3521. INT 13 - IBM/MS INT 13 Extensions - EJECT MEDIA
  3522.     AH = 46h
  3523.     AL = 00h (reserved)
  3524.     DL = drive number
  3525. Return: CF clear if successful
  3526.         AH = 00h
  3527.     CF set on error
  3528.         AH = error code (see #00234)
  3529. SeeAlso: AH=49h,INT 15/AH=52h"INT 13 Extensions"
  3530. --------d-1347-------------------------------
  3531. INT 13 - IBM/MS INT 13 Extensions - EXTENDED SEEK
  3532.     AH = 47h
  3533.     DL = drive number
  3534.     DS:SI -> disk address packet (see #00272)
  3535. Return: CF clear if successful
  3536.         AH = 00h
  3537.     CF set on error
  3538.         AH = error code (see #00234)
  3539. SeeAlso: AH=0Ch,AH=42h"INT 13 Ext"
  3540. --------d-1348-------------------------------
  3541. INT 13 - IBM/MS INT 13 Extensions - GET DRIVE PARAMETERS
  3542.     AH = 48h
  3543.     DL = drive (80h-FFh)
  3544.     DS:SI -> buffer for drive parameters (see #00273)
  3545. Return: CF clear if successful
  3546.         AH = 00h
  3547.         DS:SI buffer filled
  3548.     CF set on error
  3549.         AH = error code (see #00234)
  3550. BUG:    several different Compaq BIOSes incorrectly report high-numbered
  3551.       drives (such as 90h, B0h, D0h, and F0h) as present, giving them the
  3552.       same geometry as drive 80h; as a workaround, scan through disk
  3553.       numbers, stopping as soon as the number of valid drives encountered
  3554.       equals the value in 0040h:0075h
  3555. SeeAlso: AH=08h,AH=41h,AH=49h,MEM 0040h:0075h
  3556.  
  3557. Format of IBM/MS INT 13 Extensions drive parameters:
  3558. Offset    Size    Description    (Table 00273)
  3559.  00h    WORD    (call) size of buffer
  3560.             (001Ah for v1.x, 001Eh for v2.x, 42h for v3.0)
  3561.         (ret) size of returned data
  3562.  02h    WORD    information flags (see #00274)
  3563.  04h    DWORD    number of physical cylinders on drive
  3564.  08h    DWORD    number of physical heads on drive
  3565.  0Ch    DWORD    number of physical sectors per track
  3566.  10h    QWORD    total number of sectors on drive
  3567.  18h    WORD    bytes per sector
  3568. ---v2.0+ ---
  3569.  1Ah    DWORD    -> EDD configuration parameters (see #00278)
  3570.         FFFFh:FFFFh if not available
  3571. ---v3.0 ---
  3572.  1Eh    WORD    signature BEDDh to indicate presence of Device Path info
  3573.  20h    BYTE    length of Device Path information, including signature and this
  3574.           byte (24h for v3.0)
  3575.  21h  3 BYTEs    reserved (0)
  3576.  24h  4 BYTEs    ASCIZ name of host bus ("ISA" or "PCI")
  3577.  28h  8 BYTEs    ASCIZ name of interface type
  3578.         "ATA"
  3579.         "ATAPI"
  3580.         "SCSI"
  3581.         "USB"
  3582.         "1394" IEEE 1394 (FireWire)
  3583.         "FIBRE" Fibre Channel
  3584.  30h  8 BYTEs    Interface Path (see #00275)
  3585.  38h  8 BYTEs    Device Path (see #00276)
  3586.  40h    BYTE    reserved (0)
  3587.  41h    BYTE    checksum of bytes 1Eh-40h (two's complement of sum, which makes
  3588.           the 8-bit sum of bytes 1Eh-41h equal 00h)
  3589. Note:    if the size is less than 30 on call, the final DWORD will not be
  3590.       returned by a v2.x implementation; similarly for the Device Path info
  3591. SeeAlso: #00277,#03196
  3592.  
  3593. Bitfields for IBM/MS INT 13 Extensions information flags:
  3594. Bit(s)    Description    (Table 00274)
  3595.  0    DMA boundary errors handled transparently
  3596.  1    cylinder/head/sectors-per-track information is valid
  3597.  2    removable drive
  3598.  3    write with verify supported
  3599.  4    drive has change-line support (required if drive >= 80h is removable)
  3600.  5    drive can be locked (required if drive >= 80h is removable)
  3601.  6    CHS information set to maximum supported values, not current media
  3602.  15-7    reserved (0)
  3603. SeeAlso: #00273
  3604.  
  3605. Format of EDD v3.0 Interface Path:
  3606. Offset    Size    Description    (Table 00275)
  3607. ---ISA---
  3608.  00h    WORD    16-bit base address
  3609.  02h  6 BYTEs    reserved (0)
  3610. ---PCI---
  3611.  00h    BYTE    PCI bus number
  3612.  01h    BYTE    PCI device number
  3613.  02h    BYTE    PCI function number
  3614.  03h  5 BYTEs    reserved (0)
  3615. SeeAlso: #00273,#00276
  3616.  
  3617. Format of EDD v3.0 Device Path:
  3618. Offset    Size    Description    (Table 00276)
  3619. ---ATA---
  3620.  00h    BYTE    flag: 00h = master, 01h = slave
  3621.  01h  7 BYTEs    reserved (0)
  3622. ---ATAPI---
  3623.  00h    BYTE    flag: 00h = master, 01h = slave
  3624.  01h    BYTE    logical unit number
  3625.  02h  6 BYTEs    reserved (0)
  3626. ---SCSI---
  3627.  00h    BYTE    logical unit number
  3628.  01h  7 BYTEs    reserved (0)
  3629. ---USB---
  3630.  00h    BYTE    to be determined
  3631.  01h  7 BYTEs    reserved (0)
  3632. ---IEEE1394---
  3633.  00h    QWORD    64-bit FireWire General Unique Identifier (GUID)
  3634. ---FibreChannel---
  3635.  00h    QWORD    Word Wide Number (WWN)
  3636. SeeAlso: #00273,#00275
  3637.  
  3638. Format of Phoenix Enhanced Disk Drive Spec translated drive parameter table:
  3639. Offset    Size    Description    (Table 00277)
  3640.  00h    WORD    number of cylinders
  3641.  02h    BYTE    number of heads
  3642.  03h    BYTE    A0h (signature indicating translated table)
  3643.  04h    BYTE    number of physical sectors per track
  3644.  05h    WORD    starting write precompensation cylinder number
  3645.  07h    BYTE    reserved
  3646.  08h    BYTE    control byte (see #03198 at INT 41"DISK 0")
  3647.  09h    WORD    number of physical cylinders
  3648.  0Bh    BYTE    number of physical heads
  3649.  0Ch    WORD    cylinder number of landing zone
  3650.  0Eh    BYTE    number of logical sectors per track
  3651.  0Fh    BYTE    checksum
  3652. Program: the Phoenix Enhanced Disk Drive Specification is an addition to the
  3653.       IBM/MS INT 13 extensions
  3654. SeeAlso: #00278,#03196
  3655.  
  3656. Format of Phoenix Enhanced Disk Drive Spec Fixed Disk Parameter Table:
  3657. Offset    Size    Description    (Table 00278)
  3658.  00h    WORD    physical I/O port base address
  3659.  02h    WORD    disk-drive control port address
  3660.  04h    BYTE    drive flags (see #00279)
  3661.  05h    BYTE    proprietary information
  3662.         bits 7-4 reserved (0)
  3663.         bits 3-0: Phoenix proprietary (used by BIOS)
  3664.  06h    BYTE    IRQ for drive (bits 3-0; bits 7-4 reserved and must be 0)
  3665.  07h    BYTE    sector count for multi-sector transfers
  3666.  08h    BYTE    DMA control
  3667.         bits 7-4: DMA type (0-2) as per ATA-2 specification
  3668.         bits 3-0: DMA channel
  3669.  09h    BYTE    programmed I/O control
  3670.         bits 7-4: reserved (0)
  3671.         bits 3-0: PIO type (1-4) as per ATA-2 specification
  3672.  0Ah    WORD    drive options (see #00280)
  3673.  0Ch  2 BYTEs    reserved (0)
  3674.  0Eh    BYTE    extension revision level (high nybble=major, low nybble=minor)
  3675.         (currently 10h for v1.0 and 11h for v1.1-3.0)
  3676.  0Fh    BYTE    2's complement checksum of bytes 00h-0Eh
  3677.         8-bit sum of all bytes 00h-0Fh should equal 00h
  3678. SeeAlso: #00277
  3679.  
  3680. Bitfields for Phoenix Enhanced Disk Drive Spec drive flags:
  3681. Bit(s)    Description    (Table 00279)
  3682.  7    reserved (1)
  3683.  6    LBA enabled
  3684.  5    reserved (1)
  3685.  4    drive is slave
  3686.  3-0    reserved (0)
  3687. SeeAlso: #00278,#00280
  3688.  
  3689. Bitfields for Phoenix Enhanced Disk Drive Spec drive options:
  3690. Bit(s)    Description    (Table 00280)
  3691.  0    fast PIO enabled
  3692.  1    fast DMA access enabled
  3693.  2    block PIO (multi-sector transfers) enabled
  3694.  3    CHS translation enabled
  3695.  4    LBA translation enabled
  3696.  5    removable media
  3697.  6    ATAPI device (CD-ROM)
  3698.  7    32-bit transfer mode
  3699. ---v1.1+ ---
  3700.  8    ATAPI device uses DRQ to signal readiness for packet command
  3701.     (must be 0 if bit 6 is 0)
  3702.  10-9    translation type (must be 00 if bit 3 is 0)
  3703.     00 Phoenix bit-shifting translation
  3704.     01 LBA-assisted translation
  3705.     10 reserved
  3706.     11 proprietary translation
  3707. ---v3.0---
  3708.  11    Ultra DMA access enabled
  3709.  15-12    reserved
  3710. SeeAlso: #00278,#00279
  3711. --------d-1349-------------------------------
  3712. INT 13 - IBM/MS INT 13 Extensions - EXTENDED MEDIA CHANGE
  3713.     AH = 49h
  3714.     DL = drive number
  3715. Return: CF clear if media has not changed
  3716.         AH = 00h
  3717.     CF set if media may have changed
  3718.         AH = 06h (see #00234)
  3719. Note:    unlike AH=16h, any drive number may be specified
  3720. SeeAlso: AH=16h,AH=41h"INT 13 Ext",AH=46h
  3721. --------d-134A-------------------------------
  3722. INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION
  3723.     AH = 4Ah
  3724.     AL = 00h
  3725.     DS:SI -> specification packet (see #00281)
  3726. Return: CF clear if successful
  3727.     CF set on error (drive will not be in emulation mode)
  3728.     AX = return codes
  3729. SeeAlso: AH=48h,AX=4B00h,AH=4Ch,AH=4Dh
  3730.  
  3731. Format of Bootable CD-ROM Specification Packet:
  3732. Offset    Size    Description    (Table 00281)
  3733.  00h    BYTE    size of packet in bytes (13h)
  3734.  01h    BYTE    boot media type (see #00282)
  3735.  02h    BYTE    drive number
  3736.         00h floppy image
  3737.         80h bootable hard disk
  3738.         81h-FFh nonbootable or no emulation
  3739.  03h    BYTE    CD-ROM controller number
  3740.  04h    DWORD    Logical Block Address of disk image to emulate
  3741.  08h    WORD    device specification (see also #00282)
  3742.         (IDE) bit 0: drive is slave instead of master
  3743.         (SCSI)    bits 7-0: LUN and PUN
  3744.             bits 15-8: bus number
  3745.  0Ah    WORD    segment of 3K buffer for caching CD-ROM reads
  3746.  0Ch    WORD    load segment for initial boot image
  3747.         if 0000h, load at segment 07C0h
  3748.  0Eh    WORD    number of 512-byte virtual sectors to load
  3749.         (only valid for AH=4Ch)
  3750.  10h    BYTE    low byte of cylinder count (for INT 13/AH=08h)
  3751.  11h    BYTE    sector count, high bits of cylinder count (for INT 13/AH=08h)
  3752.  12h    BYTE    head count (for INT 13/AH=08h)
  3753. SeeAlso: #00283,AH=08h
  3754.  
  3755. Bitfields for Bootable CD-ROM boot media type:
  3756. Bit(s)    Description    (Table 00282)
  3757.  3-0    media type
  3758.     0000 no emulation
  3759.     0001 1.2M diskette
  3760.     0010 1.44M diskette
  3761.     0011 2.88M diskette
  3762.     0100 hard disk (drive C:)
  3763.     other reserved
  3764.  5-4    reserved (0)
  3765.  6    image contains ATAPI driver
  3766.  7    image contains SCSI driver(s)
  3767. SeeAlso: #00281
  3768. --------d-134B00-----------------------------
  3769. INT 13 - Bootable CD-ROM - TERMINATE DISK EMULATION
  3770.     AX = 4B00h
  3771.     DL = drive number or 7Fh to terminate all emulations
  3772.     DS:SI -> empty specification packet (see #00281)
  3773. Return: CF clear if successful
  3774.     CF set on error (drive will still be in emulation mode)
  3775.     AX = return codes
  3776.     DS:SI specification packet filled
  3777. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh
  3778. --------d-134B01-----------------------------
  3779. INT 13 - Bootable CD-ROM - GET STATUS
  3780.     AX = 4B01h
  3781.     DL = drive number
  3782.     DS:SI -> empty specification packet (see #00281)
  3783. Return: CF clear if successful
  3784.     CF set on error
  3785.     AX = return codes
  3786.     DS:SI specification packet filled
  3787. Note:    same as AX=4B00h, but does not terminate emulation
  3788. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh
  3789. --------d-134C-------------------------------
  3790. INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION AND BOOT
  3791.     AH = 4Ch
  3792.     AL = 00h
  3793.     DS:SI -> specification packet (see #00281)
  3794. Return: never, if successful
  3795.     CF set (error while attempting to boot)
  3796.     AX = error codes
  3797. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Dh
  3798. --------d-134D00-----------------------------
  3799. INT 13 - Bootable CD-ROM - RETURN BOOT CATALOG
  3800.     AX = 4D00h
  3801.     DS:SI -> command packet (see #00283)
  3802. Return: CF clear if successful
  3803.     CF set on error
  3804.     AX = return codes
  3805. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch
  3806.  
  3807. Format of Bootable CD-ROM "get boot catalog" command packet:
  3808. Offset    Size    Description    (Table 00283)
  3809.  00h    BYTE    size of packet in bytes (08h)
  3810.  01h    BYTE    number of sectors of boot catalog to read
  3811.  02h    DWORD    -> buffer for boot catalog
  3812.  06h    WORD    first sector in boot catalog to transfer
  3813. SeeAlso: #00281
  3814. --------d-134E-------------------------------
  3815. INT 13 - IBM/MS INT 13 Extensions v2.1 - SET HARDWARE CONFIGURATION
  3816.     AH = 4Eh
  3817.     AL = function
  3818.         00h enable prefetch
  3819.         01h disable prefetch
  3820.         02h set maximum PIO transfer mode
  3821.         03h set PIO mode 0
  3822.         04h set default PIO transfer mode
  3823.         05h enable INT 13 DMA maximum mode
  3824.         06h disable INT 13 DMA
  3825.     DL = drive number
  3826. Return: CF clear if successful
  3827.         AH = 00h
  3828.         AL = status
  3829.         00h command was safe (only affected specified drive)
  3830.         01h other devices are affected
  3831.     CF set on error
  3832.         AH = error code (see #00234)
  3833. Note:    DMA and PIO modes are mutually exclusive, so selecting DMA disables
  3834.       PIO (for either the specified device or all devices on that
  3835.       controller), and selecting PIO disables DMA
  3836. SeeAlso: AH=41h"INT 13 Extensions",AX=5001h"Enhanced Disk Drive"
  3837. --------d-135001-----------------------------
  3838. INT 13 - Enhanced Disk Drive Spec v3.0 - SEND PACKET COMMAND
  3839.     AX = 5001h
  3840.     DL = drive number
  3841.     ES:BX -> command packet (see #00284)
  3842. Return: CF clear if successful
  3843.         AH = 00h
  3844.     CF set on error
  3845.         AH = error code
  3846. Desc:    send data to and from a serial packet-oriented device, such as IEEE1394
  3847.       and USB
  3848. SeeAlso: AH=41h"INT 13 Extensions",AH=4Eh
  3849.  
  3850. Format of Enhanced Disk Drive Spec v3.0 command packet:
  3851. Offset    Size    Description    (Table 00284)
  3852.  00h    WORD    signature B055h
  3853.  02h    BYTE    length of packet in bytes
  3854.  03h    BYTE    reserved (0)
  3855.  04h  N BYTEs    formatted packet data
  3856. --------v-135001------------------------
  3857. INT 13 - VIRUS - "Andropinis" - INSTALLATION CHECK
  3858.     AX = 5001h
  3859. Return: AX = 0150h if resident
  3860. SeeAlso: AX=FD50h"VIRUS",INT 21/AX=0B56h
  3861. --------v-135342CX0001-----------------------
  3862. INT 13 - ScanBoot - INSTALLATION CHECK
  3863.     AX = 5342h ("SB")
  3864.     CX = 0001h
  3865.     DX = 0000h
  3866. Return: CF clear if ScanBoot installed
  3867.        AX = 0000h
  3868.        CX = serial number ("SW" if shareware release)
  3869.        DX = version
  3870.        BX,SI,ES destroyed
  3871. Program: ScanBoot is a virus-detection TSR by PanSoft
  3872. --------d-135501-----------------------------
  3873. INT 13 - Seagate ST01/ST02 - Inquiry
  3874.     AX = 5501h
  3875.     DH = number of bytes to transfer
  3876.     DL = drive ID (80h, 81h, ...)
  3877.     ES:BX -> buffer for results
  3878. Return: ES:BX buffer filled with the Inquiry results
  3879. Notes:    the ST01/ST02 BIOS does not return any success/failure indication,
  3880.       so all commands must be assumed to have been successful
  3881.     the ST01/ST02 BIOS always maps its drives after the previous BIOS
  3882.       drives without changing the BIOS drive count at 0040h:0075h
  3883.     this command is identical to the SCSI Inquiry command
  3884. --------d-135502-----------------------------
  3885. INT 13 - Seagate ST01/ST02 - RESERVED
  3886.     AX = 5502h
  3887. --------d-135503-----------------------------
  3888. INT 13 - Seagate ST01/ST01 - Set Device Type Qualifier (DTQ)
  3889.     AX = 5503h
  3890.     DH = DTQ byte (see #00285)
  3891.     DL = drive ID (80h, 81h, ...)
  3892. Return: nothing
  3893.  
  3894. Bitfields for DTQ byte:
  3895. Bit(s)    Description    (Table 00285)
  3896.  7    reserved
  3897.  6    SCSI drive attached
  3898.  5    reserved
  3899.  4    selected drive is ST225N/NP (Paired)
  3900.  3    selected drive is ST225N
  3901.  2    Host Adapter checks parity on the selected drive
  3902.  1    selected drive has been installed
  3903.  0    Seagate installation software present
  3904. --------d-135504-----------------------------
  3905. INT 13 U - Seagate - ??? - RETURN IDENTIFICATION
  3906.     AX = 5504h
  3907.     DX = drive (bit 7 set for hard disk)
  3908. Return: CF clear if successful
  3909.         AX = 4321h if ST01/ST02h
  3910.         AX = 4322h if ??? Seagate controller
  3911.     CF set on error
  3912. SeeAlso: AX=5505h,AX=5514h
  3913. --------d-135504-----------------------------
  3914. INT 13 - Seagate ST01/ST02 - RETURN IDENTIFICATION
  3915.     AX = 5504h
  3916.     DL = drive ID (80h, 81h, ...)
  3917. Return: AX = 4321h
  3918.     BL = selected drive number (00h, 01h)
  3919.     BH = number of drives attached to Host Adapter (max. 2)
  3920. --------d-135505-----------------------------
  3921. INT 13 - Seagate - ??? - PARK HEADS
  3922.     AX = 5505h
  3923.     DX = drive (bit 7 set for hard disk)
  3924. Return: CF clear if successful
  3925.     CF set on error
  3926. SeeAlso: AX=5504h,AX=5515h
  3927. --------d-135505-----------------------------
  3928. INT 13 - Seagate ST01/ST02 - PARK HEADS
  3929.     AX = 5505h
  3930.     DL = drive ID (80h, 81h, ...)
  3931.     DH = subfunction
  3932.         00h park heads (SCSI Stop command)
  3933.         01h un-park heads (SCSI Start command)
  3934. Return: nothing
  3935. --------d-135506-----------------------------
  3936. INT 13 - Seagate ST01/ST02 - SCSI Bus Parity
  3937.     AX = 5506h
  3938.     DL = drive ID (80h, 81h, ...)
  3939.     DH = subfunction
  3940.         00h disable parity check
  3941.         01h enable parity check
  3942.         02h return current parity setting
  3943. Return: AL = status
  3944.         00h parity checking disabled
  3945.         01h parity checking enabled
  3946. --------d-135507-----------------------------
  3947. INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS
  3948.     AX = 5507h to 550Dh
  3949. Note:    officially listed as "reserved"
  3950. --------d-135514-----------------------------
  3951. INT 13 U - Seagate - ???
  3952.     AX = 5514h
  3953.     DX = drive (bit 7 set for hard disk)
  3954. Return: CF clear if successful
  3955.     CF set on error
  3956.     AX = return value (FEBEh,FEBFh,FEDAh,FEDBh)
  3957. SeeAlso: AX=5504h,AX=5515h
  3958. --------d-135515-----------------------------
  3959. INT 13 U - Seagate - PARK HEADS???
  3960.     AX = 5515h
  3961.     DX = drive (bit 7 set for hard disk)
  3962. Return: CF clear if successful
  3963.     CF set on error
  3964. Note:    appears to be identical to AX=5505h
  3965. SeeAlso: AX=5504h,AX=5505h
  3966. --------d-1359-------------------------------
  3967. INT 13 - SyQuest - Generic SCSI pass through
  3968.     AH = 59h
  3969.     CX = HOST_ID, 0-based
  3970.     DX = 80h
  3971.     ES:BX pointer to SCSI structure (see #00286)
  3972. Return: CF clear
  3973.     AH = 95h
  3974. SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=1Fh"SyQuest"
  3975.  
  3976. Format of SyQuest SCSI structure:
  3977. Offset    Size    Description    (Table 00286)
  3978.  00h    WORD    opcode (see #00287)
  3979.  02h    BYTE    target's SCSI ID
  3980.  03h    BYTE    target's logical unit number
  3981.  04h    BYTE    data direction (00h no data xfer, 01h data in, FFh data out)
  3982.  05h    BYTE    host status
  3983.         00h successful
  3984.         01h selection time out
  3985.         02h data over-run or under-run
  3986.  06h    BYTE    target status at command completion
  3987.         00h successful
  3988.         02h check status
  3989.         08h busy
  3990.  07h    BYTE    command data block length
  3991.  08h    DWORD    request data length
  3992.  0Ch    DWORD    result data length (actual length of data transferred)
  3993.  10h    DWORD    -> CDB (see #03236,#03237,#03238)
  3994.  14h    DWORD    -> data buffer
  3995. Note:    The handler does not perform a 'Request Sense' command if there was an
  3996.       error
  3997.  
  3998. (Table 00287)
  3999. Values for SCSI opcode:
  4000.  00h    verify interface
  4001.     clears carry flag and returns if function is available
  4002.  01h    returns the ID of the INT 13h Handler in a NULL terminated string of
  4003.     length less than 40 byte including the terminator.
  4004.     The string is stored in the buffer pointed by p_buf.
  4005.  02h    device mapping info. The caller provides a one byte buffer.
  4006.     The handler stores the Int 13h Device ID (80h or above) in the buffer.
  4007.     It stores 0 if that target does not exists.
  4008.  03h    execute SCSI command
  4009.  04h    device reset
  4010.  05h    SCSI bus reset
  4011. SeeAlso: #00286
  4012. --------d-1370-------------------------------
  4013. INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
  4014.     AH = 70h
  4015.     ???
  4016. Return: ???
  4017. Note:    Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
  4018.       formatting program) make this call, presumably to EDVR.SYS (the
  4019.       partitioning driver)
  4020. SeeAlso: AH=ADh
  4021. ----------1375-------------------------------
  4022. INT 13 - ???
  4023.     AH = 75h
  4024.     ???
  4025. Return: AH = ???
  4026.     ???
  4027. Note:    intercepted by PC-Cache (v5.1 only)
  4028. ----------1376-------------------------------
  4029. INT 13 - ???
  4030.     AH = 76h
  4031.     ???
  4032. Return: AH = ???
  4033.     ???
  4034. Note:    intercepted by PC-Cache (v5.1 only)
  4035. --------c-137B00-----------------------------
  4036. INT 13 - NOW! v3.05 - GET INFORMATION
  4037.     AX = 7B00h
  4038.     CX:DX -> 1F8h-byte buffer for information record (see #00288)
  4039. Return: AX = 0000h
  4040.     BX = segment of main resident code
  4041.     ES = ???
  4042. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  4043. SeeAlso: AX=7B02h,AH=EFh
  4044.  
  4045. Format of NOW! information record:
  4046. Offset    Size    Description    (Table 00288)
  4047.  00h 80 BYTEs    name of directory from which NOW! was started
  4048.  50h 424 BYTEs    ???
  4049.  81h  ? BYTEs    array of bytes for ???
  4050.  F7h 250 BYTEs    array of 25 entries, one per drive???
  4051.     Offset    Size    Description
  4052.      00h  2 BYTEs    ???
  4053.      02h    WORD    ???
  4054.      04h    WORD    ???
  4055.      06h  4 BYTEs    ???
  4056. 1F1h  7 BYTEs    ???
  4057. --------c-137B01-----------------------------
  4058. INT 13 - NOW! v3.05 - ???
  4059.     AX = 7B01h
  4060. Return: DX = segment of ???
  4061. SeeAlso: AX=7B00h
  4062. --------c-137B02-----------------------------
  4063. INT 13 - NOW! v3.05 - SET INFORMATION
  4064.     AX = 7B02h
  4065.     BX = segment of ??? (10h above a PSP)
  4066.     CX:DX -> 1F8h-byte information record (see #00288)
  4067. Return: ???
  4068. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  4069. Note:    NOW! grabs the INT 24h value from the PSP reached via the segment in
  4070.       BX
  4071. SeeAlso: AX=7B00h
  4072. --------c-137B03-----------------------------
  4073. INT 13 - NOW! v3.05 - ???
  4074.     AX = 7B03h
  4075.     ???
  4076. Return: ???
  4077. SeeAlso: AX=7B00h,AX=7B04h
  4078. --------c-137B04-----------------------------
  4079. INT 13 - NOW! v3.05 - ???
  4080.     AX = 7B04h
  4081.     ???
  4082. Return: ???
  4083. SeeAlso: AX=7B03h
  4084. --------c-137B05-----------------------------
  4085. INT 13 - NOW! v3.05 - GET DISK ACCESSES???
  4086.     AX = 7B05h
  4087. Return: BX:AX = number of physical accesses???
  4088.     DX:CX = total disk accesses???
  4089. SeeAlso: AX=7B00h,AX=7B06h
  4090. --------c-137B06-----------------------------
  4091. INT 13 - NOW! v3.05 - GET ???
  4092.     AX = 7B06h
  4093.     BX = ???
  4094. Return: AX = 0000h
  4095.     BX = ???
  4096. SeeAlso: AX=7B05h,AX=7B07h
  4097. --------c-137B07-----------------------------
  4098. INT 13 - NOW! v3.05 - GET ???
  4099.     AX = 7B07h
  4100. Return: AX = ???
  4101.     BX = ???
  4102.     CX = ???
  4103.     DX = ???
  4104. SeeAlso: AX=7B06h
  4105. --------c-137B08-----------------------------
  4106. INT 13 - NOW! v3.05 - ???
  4107.     AX = 7B08h
  4108.     CX = ??? (default 00h)
  4109. Return: ???
  4110. SeeAlso: AX=7B00h
  4111. --------c-1380--CX6572-----------------------
  4112. INT 13 - FAST! v4.02+ - API
  4113.     AH = 80h
  4114.     CX = 6572h
  4115.     DX = 1970h
  4116.     ES:BX -> request packet (see #00290)
  4117.     AL = function number (see #00289)
  4118. Return: AH = status (except function 06h)
  4119.         00h if successful
  4120.         01h invalid function
  4121.         05h not supported by the installed variant
  4122.     CF clear if successful
  4123.     CF set on error
  4124.     AL may be destroyed
  4125. Program: FAST! is a disk cache by Future Computing Systems and marketed by
  4126.       BLOC Publishing Corp.
  4127. SeeAlso: AX=8001h,AX=8006h,AX=8007h
  4128. Index:    hotkeys;FAST!
  4129.  
  4130. (Table 00289)
  4131. Values for FAST! function:
  4132.  01h    get cache information (see AX=8001h)
  4133.  04h    disable cache
  4134.  05h    enable cache and reset statistics
  4135.  06h    installation check (see AX=8006h)
  4136.  07h    unhook interrupts (see AX=8007h)
  4137.  09h    flush cache
  4138.  0Ah    (v4.02+) enable staged writes
  4139.  0Bh    (v4.02+) disable staged writes
  4140.  0Ch    (v4.02+) enable beep on flush
  4141.  0Dh    (v4.02+) disable beep on flush
  4142.  0Eh    ???
  4143.  0Fh    ???
  4144.  10h    (v4.12+) enable hotkeys
  4145.  11h    (v4.12+) disable hotkeys
  4146.  12h    (v4.13+) set idle delay
  4147.  13h    (v4.13+) set flush dirty percentage
  4148.  14h    (v5.00+) enable mouse checks
  4149.  15h    (v5.00+) disable mouse checks
  4150.  16h    (v5.00d+) reduce cache size to minimum
  4151.  17h    (v5.00d+) increase cache size to maximum
  4152.  
  4153. Format of FAST! request packet:
  4154. Offset    Size    Description    (Table 00290)
  4155.  00h    DWORD    pointer to 19-byte signature string (see #00291)
  4156.  04h    DWORD    pointer to buffer for data (if needed by function)
  4157.  
  4158. (Table 00291)
  4159. Values for FAST! v4.04-v5.03 signature string:
  4160.  13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h 04h 08h 15h
  4161. --------c-138001CX6572-----------------------
  4162. INT 13 - FAST! v4.02+ - GET CACHE INFORMATION
  4163.     AX = 8001h
  4164.     CX = 6572h
  4165.     DX = 1970h
  4166.     ES:BX -> request packet (see #00292)
  4167. Return: AH = 00h if successful
  4168. SeeAlso: AH=80h,AX=8006h
  4169.  
  4170. Format of FAST! request packet:
  4171. Offset    Size    Description    (Table 00292)
  4172.  00h    DWORD    -> 19-byte signature string (see #00291)
  4173.  04h    DWORD    -> buffer for cache information (see #00293)
  4174.  
  4175. Format of FAST! cache information (v5.00-5.03):
  4176. Offset    Size    Description    (Table 00293)
  4177.  00h    WORD    binary version number of FAST! (v5.00 = 01F4h)
  4178.  02h    BYTE    revision letter (61h = X.XXa, 62h = X.XXb, etc.)
  4179.  03h    BYTE    FAST! variant
  4180.         (01h = FASTE, 02h = FASTX BIOS, 04h = FASTC, 20h = FASTX XMS)
  4181.  04h    DWORD    total number of read requests
  4182.  08h    DWORD    number of physical disk reads
  4183.  0Ch    DWORD    grabbed hash buckets
  4184.  10h    DWORD    "st_386mem"
  4185.  14h    DWORD    total number of writes (only counted when staging enabled)
  4186.  18h    DWORD    number of physical disk writes (only when staging enabled)
  4187.  1Ch    DWORD    number of write errors while flushing cache
  4188.  20h    WORD    flags1 (see #00294)
  4189.  22h    WORD    flags
  4190.         bit 0: ???
  4191.         bit 1: staged writes enabled
  4192.  24h    WORD    ???
  4193.  26h    WORD    maximum cache size in KB
  4194.  28h    WORD    minimum cache size in KB
  4195.  2Ah    WORD    segment of first cache buffer (FASTC)
  4196.         segment of EMS page frame (FASTE)
  4197.         XMS handle (FASTX XMS)
  4198.  2Ch    WORD    number of hash buckets containing no entries
  4199.  2Eh    WORD    number of hash buckets containing one entry
  4200.  30h    WORD    number of hash buckets containing two entries
  4201.  32h    WORD    number of hash buckets containing three entries
  4202.  34h    WORD    number of hash buckets containing four entries
  4203.  36h    WORD    number of hash buckets containing five entries
  4204.  38h    WORD    maximum contiguous sectors
  4205.  3Ah    WORD    hash factor
  4206.  3Ch    WORD    number of paragraphs of memory used below 1M
  4207.  3Eh    WORD    entries per hash bucket
  4208.  40h    WORD    idle delay in seconds
  4209.  42h  2 BYTEs    ???
  4210.  44h    WORD    staged write threshold percentage
  4211.  46h  2 BYTEs    ???
  4212.  48h    WORD    number of dirty sectors
  4213.  4Ah    WORD    number of staged write buffers
  4214.  4Ch    WORD    current cache size in KB
  4215.  4Eh    WORD    beep frequency in Hz
  4216.  50h    WORD    ???
  4217.  52h    WORD    ???
  4218.  
  4219. Bitfields for FAST! flags1:
  4220. Bit(s)    Description    (Table 00294)
  4221.  0    beep on flush
  4222.  3    hotkeys enabled
  4223.  4    mouse idle check enabled
  4224.  8    caching enabled
  4225.  13    ???
  4226. --------c-138006CX6572-----------------------
  4227. INT 13 - FAST! v4.02+ - INSTALLATION CHECK
  4228.     AX = 8006h
  4229.     CX = 6572h
  4230.     DX = 1970h
  4231.     ES:BX -> request packet (see #00295)
  4232. Return: AX = 1965h if installed
  4233. SeeAlso: AH=80h,AX=8001h,AX=8007h
  4234.  
  4235. Format of FAST! request packet:
  4236. Offset    Size    Description    (Table 00295)
  4237.  00h    DWORD    -> 19-byte signature string (see #00291)
  4238. --------c-138007CX6572-----------------------
  4239. INT 13 - FAST! v4.02+ - UNHOOK INTERRUPTS
  4240.     AX = 8007h
  4241.     CX = 6572h
  4242.     DX = 1970h
  4243.     ES:BX -> request packet (see #00296)
  4244. Return: AX = 1965h if installed
  4245. SeeAlso: AH=80h,AX=8006h
  4246. Index:    uninstall;FAST!
  4247.  
  4248. Format of FAST! request packet:
  4249. Offset    Size    Description    (Table 00296)
  4250.  00h    DWORD    -> 19-byte signature string (see #00291)
  4251. --------c-1381--SI4358-----------------------
  4252. INT 13 - Super PC-Kwik v3.20+ - ???
  4253.     AH = 81h
  4254.     SI = 4358h
  4255.     ???
  4256. Return: ???
  4257. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  4258.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  4259.       to PC-Kwik v3.20 and PC-Cache v5.5 to PC-Kwik v3.27)
  4260.     returns immediately in PC-Cache v5.x
  4261. Index:    PC-Cache|Qualitas Qcache
  4262. --------c-1382--SI4358-----------------------
  4263. INT 13 - Super PC-Kwik v3.20+ - ???
  4264.     AH = 82h
  4265.     SI = 4358h
  4266.     ???
  4267. Return: AL = ???
  4268. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  4269.       Super PC-Kwik, and thus support this call
  4270. SeeAlso: AH=84h
  4271. Index:    PC-Cache|Qualitas Qcache
  4272. --------c-1383--SI4358-----------------------
  4273. INT 13 - Super PC-Kwik v3.20+ - ???
  4274.     AH = 83h
  4275.     SI = 4358h
  4276.     AL = ???
  4277.     ES:BX -> ???
  4278.     ???
  4279. Return: ???
  4280. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  4281.       Super PC-Kwik, and thus support this call
  4282. SeeAlso: AH=85h
  4283. Index:    PC-Cache|Qualitas Qcache
  4284. --------c-1384--SI4358-----------------------
  4285. INT 13 - Super PC-Kwik v3.20+ - ???
  4286.     AH = 84h
  4287.     SI = 4358h
  4288.     AL = ???
  4289.     ???
  4290. Return: AL = ???
  4291. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  4292.       Super PC-Kwik, and thus support this call
  4293. SeeAlso: AH=82h
  4294. Index:    PC-Cache|Qualitas Qcache
  4295. --------c-1385--SI4358-----------------------
  4296. INT 13 - Super PC-Kwik v3.20+ - ???
  4297.     AH = 85h
  4298.     SI = 4358h
  4299.     AL = ???
  4300.     DL = ???
  4301.     ???
  4302. Return: ???
  4303. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  4304.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  4305.       to PC-Kwik v3.20)
  4306. SeeAlso: AH=83h
  4307. Index:    PC-Cache|Qualitas Qcache
  4308. --------c-1386--SI4358-----------------------
  4309. INT 13 - Super PC-Kwik v4.00+ - ???
  4310.     AH = 86h
  4311.     SI = 4358h
  4312.     ???
  4313. Return: ???
  4314. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  4315.       thus supports this call
  4316. Index:    Qualitas Qcache
  4317. --------c-1387--SI4358-----------------------
  4318. INT 13 - Super PC-Kwik v4.00+ - ???
  4319.     AH = 87h
  4320.     SI = 4358h
  4321.     ???
  4322. Return: AH = status??? (00h)
  4323.     CX = ???
  4324.     DX = ??? (0000h)
  4325. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  4326.       thus supports this call
  4327. Index:    Qualitas Qcache
  4328. --------c-1388--SI4358-----------------------
  4329. INT 13 - Super PC-Kwik v4.00+ - ???
  4330.     AH = 88h
  4331.     SI = 4358h
  4332.     ???
  4333. Return: AH = status??? (00h)
  4334.     CX = ???
  4335.     DX = ??? (0000h)
  4336. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  4337.       thus supports this call
  4338. Index:    Qualitas Qcache
  4339. --------c-1389--SI4358-----------------------
  4340. INT 13 - Super PC-Kwik v5.10+ - ???
  4341.     AH = 89h
  4342.     SI = 4358h
  4343.     ???
  4344. Return: ???
  4345. --------c-138A--SI4358-----------------------
  4346. INT 13 - Super PC-Kwik v5.10+ - ???
  4347.     AH = 8Ah
  4348.     SI = 4358h
  4349.     ???
  4350. Return: ???
  4351. --------c-138EED-----------------------------
  4352. INT 13 - HyperDisk v4.01+ - ???
  4353.     AX = 8EEDh
  4354.     ???
  4355. Return: ???
  4356. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  4357. SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AX=DF00h
  4358. --------c-138EEE-----------------------------
  4359. INT 13 - HyperDisk v4.01+ - ???
  4360.     AX = 8EEEh
  4361. Return: CF set
  4362.     AX = CS of HyperDisk resident code
  4363.     ???
  4364. Note:    identical to AX=8EEFh in HYPERDKX v4.21-4.30
  4365. SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
  4366. --------c-138EEF-----------------------------
  4367. INT 13 - HyperDisk v4.01+ - ???
  4368.     AX = 8EEFh
  4369. Return: CF set
  4370.     AX = CS of HyperDisk resident code
  4371.     ???
  4372. Note:    identical to AX=8EEEh in HYPERDKX v4.21-4.30
  4373. SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
  4374. --------c-1392--SI4358-----------------------
  4375. INT 13 - Super PC-Kwik v5.10+ - ???
  4376.     AH = 92h
  4377.     SI = 4358h
  4378.     ???
  4379. Return: AH = status??? (00h)
  4380.     DL = ???
  4381. SeeAlso: AH=93h
  4382. --------c-1393--SI4358-----------------------
  4383. INT 13 - Super PC-Kwik v5.10+ - ???
  4384.     AH = 93h
  4385.     SI = 4358h
  4386.     ???
  4387. Return: AH = status??? (00h)
  4388.     AL = ???
  4389. SeeAlso: AH=92h
  4390. --------c-1394--SI4358-----------------------
  4391. INT 13 - Super PC-Kwik v5.10+ - ???
  4392.     AH = 94h
  4393.     SI = 4358h
  4394.     ???
  4395. Return: ???
  4396. --------c-1395--SI4358-----------------------
  4397. INT 13 - Super PC-Kwik v5.10+ - ???
  4398.     AH = 95h
  4399.     SI = 4358h
  4400.     ???
  4401. Return: AH = status??? (00h)
  4402.     DX = ???
  4403. --------c-1396--SI4358-----------------------
  4404. INT 13 - Super PC-Kwik v5.10+ - ???
  4405.     AH = 96h
  4406.     SI = 4358h
  4407.     AL = ??? (01h)
  4408.     BX = ??? (0790h)
  4409.     DL = ???
  4410. Return: AH = status??? (00h)
  4411.     DX = ???
  4412. --------c-1397--SI4358-----------------------
  4413. INT 13 - Super PC-Kwik v5.10+ - ???
  4414.     AH = 97h
  4415.     SI = 4358h
  4416.     ???
  4417. Return: ???
  4418. --------c-1398--SI4358-----------------------
  4419. INT 13 - Super PC-Kwik v5.10+ - ???
  4420.     AH = 98h
  4421.     SI = 4358h
  4422.     ???
  4423. Return: ???
  4424. --------c-1399--SI4358-----------------------
  4425. INT 13 - Super PC-Kwik v5.10+ - ???
  4426.     AH = 99h
  4427.     SI = 4358h
  4428.     ???
  4429. Return: ???
  4430. --------c-139A--SI4358-----------------------
  4431. INT 13 - Super PC-Kwik v5.10+ - ???
  4432.     AH = 9Ah
  4433.     SI = 4358h
  4434.     ???
  4435. Return: ???
  4436. --------c-139B--SI4358-----------------------
  4437. INT 13 - Super PC-Kwik v5.10+ - ???
  4438.     AH = 9Bh
  4439.     SI = 4358h
  4440.     ???
  4441. Return: ???
  4442. --------c-139C--SI4358-----------------------
  4443. INT 13 - Super PC-Kwik v5.10+ - ???
  4444.     AH = 9Ch
  4445.     SI = 4358h
  4446.     ???
  4447. Return: ???
  4448. Note:    functions 9Ch and 9Dh are the only ones which are fully reentrant; all
  4449.       other PC-Kwik API calls (INT 13/81h-B0h) return AX=0200h and CF clear
  4450.       if a previous call is still in progress
  4451. --------c-139D--SI4358-----------------------
  4452. INT 13 - Super PC-Kwik v5.10+ - ???
  4453.     AH = 9Dh
  4454.     SI = 4358h
  4455.     ???
  4456. Return: ???
  4457. --------c-13A0--SI4358-----------------------
  4458. INT 13 - Super PC-Kwik v3.20+ - GET RESIDENT CODE SEGMENT
  4459.     AH = A0h
  4460.     SI = 4358h
  4461. Return: AX = segment of resident code
  4462. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  4463.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.5
  4464.       corresponds to PC-Kwik v3.27)
  4465. SeeAlso: INT 16/AX=FFA5h/CX=1111h
  4466. Index:    PC-Cache|Qualitas Qcache
  4467. --------c-13A1--SI4358-----------------------
  4468. INT 13 - Super PC-Kwik v3.20+ - FLUSH CACHE
  4469.     AH = A1h
  4470.     SI = 4358h
  4471. Return: CF clear
  4472.     AH = 00h (v5.10)
  4473. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  4474.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  4475.       corresponds to PC-Kwik v3.20)
  4476. SeeAlso: INT 16/AX=FFA5h/CX=FFFFh
  4477. Index:    PC-Cache|Qualitas Qcache
  4478. --------c-13A2--SI4358-----------------------
  4479. INT 13 - Super PC-Kwik v3.20+ - ???
  4480.     AH = A2h
  4481.     SI = 4358h
  4482.     ???
  4483. Return: ???
  4484. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  4485.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  4486.       corresponds to PC-Kwik v3.20)
  4487. Index:    PC-Cache|Qualitas Qcache
  4488. --------c-13A3--SI4358-----------------------
  4489. INT 13 U - Super PC-Kwik v5.10+ - DISABLE CACHE
  4490.     AH = A3h
  4491.     SI = 4358h
  4492. Return: CF clear
  4493. SeeAlso: AH=A4h
  4494. --------c-13A4--SI4358-----------------------
  4495. INT 13 U - Super PC-Kwik v5.10+ - ENABLE CACHE
  4496.     AH = A4h
  4497.     SI = 4358h
  4498. Return: CF clear
  4499. SeeAlso: AH=A3h
  4500. --------c-13A5--SI4358-----------------------
  4501. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM TERMINATION NOTIFICATION
  4502.     AH = A5h
  4503.     SI = 4358h
  4504. Return: AX = ???
  4505.     SI = ???
  4506. Notes:    called and used internally by Super PC-Kwik when a program terminates
  4507.       via INT 21/AH=00h, INT 21/AH=31h, or INT 21/AH=4Ch
  4508.     this call is not supported by Qualitas Qcache 4.00
  4509. Index:    PC-Cache
  4510. SeeAlso: AH=A6h,AH=A9h,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4Ch
  4511. --------c-13A6--SI4358-----------------------
  4512. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM LOAD NOTIFICATION
  4513.     AH = A6h
  4514.     SI = 4358h
  4515.     DS:DX -> ASCIZ program name
  4516.     ES:BX -> EXEC data block (see #01590 at INT 21/AH=4Bh)
  4517. Return: ???
  4518. Note:    called and used internally by Super PC-Kwik when a program is loaded
  4519.       with INT 21/AX=4B00h
  4520. SeeAlso: AH=A5h,AH=A9h,INT 21/AH=4Bh
  4521. --------c-13A7--SI4358-----------------------
  4522. INT 13 CU - Super PC-Kwik 5.1 - ???
  4523.     AH = A7h
  4524.     SI = 4358h
  4525. Return: ???
  4526. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  4527. SeeAlso: AH=A5h,AH=A6h,AH=A8h
  4528. --------v-13A759-----------------------------
  4529. INT 13 U - Novell DOS 7 - SDRes v27.03 - ???
  4530.     AX = A759h
  4531. Return: AX = 59A7h if installed
  4532.         DX:BX -> ??? data
  4533. Program: SDRes is the resident portion of the Search&Destroy antiviral by
  4534.       Fifth Generation Systems, as bundled with Novell DOS 7
  4535. SeeAlso: INT 21/AH=0Eh/DL=ADh
  4536. --------c-13A8--SI4358-----------------------
  4537. INT 13 CU - Super PC-Kwik 5.1 - ???
  4538.     AH = A8h
  4539.     SI = 4358h
  4540. Return: ???
  4541. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  4542. SeeAlso: AH=A5h,AH=A6h,AH=A7h
  4543. --------c-13A9--SI4358-----------------------
  4544. INT 13 CU - Super PC-Kwik 5.1 - EXITCODE RETRIEVAL NOTIFICATION
  4545.     AH = A9h
  4546.     SI = 4358h
  4547. Return: ???
  4548. Note:    called and used internally by Super PC-Kwik when an application issues
  4549.       INT 21/AH=4Dh
  4550. SeeAlso: AH=A5h,AH=A6h,INT 21/AH=4Dh
  4551. --------c-13AA--SI4358-----------------------
  4552. INT 13 - Super PC-Kwik v4+ - ???
  4553.     AH = AAh
  4554.     SI = 4358h
  4555.     ???
  4556. Return: ???
  4557. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  4558.       this call
  4559. --------c-13AB--SI4358-----------------------
  4560. INT 13 - Super PC-Kwik v4+ - ???
  4561.     AH = ABh
  4562.     SI = 4358h
  4563.     ???
  4564. Return: ???
  4565. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  4566.       this call
  4567. --------c-13AC--SI4358-----------------------
  4568. INT 13 - Super PC-Kwik v4+ - ???
  4569.     AH = ACh
  4570.     SI = 4358h
  4571.     ???
  4572. Return: ???
  4573. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  4574.       this call
  4575. --------d-13AD-------------------------------
  4576. INT 13 - Priam HARD DISK CONTROLLER???
  4577.     AH = ADh
  4578.     ???
  4579. Return: ???
  4580. Note:    this call is made from Priam's EFMT.EXE (low-level formatter), probably
  4581.       to check the ROM type on the controller for their hard disk kits
  4582. SeeAlso: AH=70h
  4583. --------c-13AD--SI4358-----------------------
  4584. INT 13 - Super PC-Kwik v4+ - ???
  4585.     AH = ADh
  4586.     SI = 4358h
  4587.     ???
  4588. Return: ???
  4589. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  4590.       this call
  4591. --------c-13AE--SI4358-----------------------
  4592. INT 13 - Super PC-Kwik v5.10+ - ???
  4593.     AH = AEh
  4594.     SI = 4358h
  4595.     ???
  4596. Return: ???
  4597. --------c-13B0--SI4358-----------------------
  4598. INT 13 - Super PC-Kwik v3.20+ - ???
  4599.     AH = B0h
  4600.     SI = 4358h
  4601.     ???
  4602. Return: ???
  4603. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC-Kwik, and thus
  4604.       supports this call; Qualitas Qcache does not support it
  4605. Index:    PC-Cache
  4606. --------d-13E000-----------------------------
  4607. INT 13 - XBIOS - COMMAND
  4608.     AX = E000h
  4609.     CX = 0
  4610.     DL = drive number (80h,81h,82h,83h)
  4611.     ES:BX = pointer to XBIOS Command Block (see #00297)
  4612. Return: CF clear if successful
  4613.         CX = 1234h XBIOS Signature
  4614.     CF set on error
  4615. Program: XBIOS is a driver in some versions of Disk Manager that is
  4616.       loaded from the disk MBR, replacing the ROM BIOS disk support
  4617.       e.g. adding LBA mode support, and read/write multiple.
  4618. SeeAlso: AH=F9h"SWBIOS"
  4619.  
  4620. Format of XBIOS Command Block:
  4621. Offset    Size    Description    (Table 00297)
  4622.  00h    BYTE    function
  4623.         0Eh Get XBIOS Configuration Information
  4624.             Return: buffer points to Ontrackr_Ref_Data structure
  4625.             (see #00298)
  4626.  01h    BYTE    reserved (must be zero before function call)
  4627.  02h    DWORD    buffer pointer - Input or output depending on opcode
  4628. SeeAlso: #00298,#00299
  4629.  
  4630. Format of Ontrackr_Ref_Data structure:
  4631. Offset    Size    Description    (Table 00298)
  4632.  00h    WORD    Size of structure (33h)
  4633.  02h    BYTE    VxD Chain mode
  4634.  03h 12 BYTEs    Drive 1: Ontrackr_VxD_Data structure (see #00299)
  4635.  0Fh 12 BYTEs    Drive 2: Ontrackr_VxD_Data structure
  4636.  1Bh 12 BYTEs    Drive 3: Ontrackr_VxD_Data structure
  4637.  27h 12 BYTEs    Drive 4: Ontrackr_VxD_Data structure (see #00299)
  4638. SeeAlso: #00297,#00299
  4639.  
  4640. Format of Ontrackr_VxD_Data structure:
  4641. Offset    Size    Description    (Table 00299)
  4642.  00h    BYTE    INT13 drive number
  4643.  01h    DWORD    Delta skew value
  4644.  05h    BYTE    Physical  heads (Word 3 of Identify Data)
  4645.  06h    BYTE    Physical sectors per track (Word 6 of Identify Data)
  4646.  07h    BYTE    Multiple Block Size (Blocking factor)
  4647.  08h    BYTE    Read/Write Multiple disable flags
  4648.         00001000b    drive supports r/w multiple
  4649.         00000100b    do not use read multiple
  4650.         00000010b    do not use write multiple
  4651.  09h    WORD    Base port address (1F0/170)
  4652.  0Bh    BYTE    Hardware interrupt channel (14/15)
  4653. SeeAlso: #00298
  4654. --------v-13EC00-----------------------------
  4655. INT 13 - VIRUS - "Tiso" - INSTALLATION CHECK
  4656.     AX = EC00h
  4657. Return: CF clear if installed
  4658. SeeAlso: AH=F2h,INT 12/AX=4350h/BX=4920h
  4659. --------d-13EE-------------------------------
  4660. INT 13 - SWBIOS - SET 1024-CYLINDER FLAG
  4661.     AH = EEh
  4662.     DL = drive number (80h, 81h)
  4663. Return: CF clear
  4664.        AH = 00h
  4665. Program: SWBIOS is a TSR by Ontrack Computer Systems
  4666. Desc:    the following INT 13 call will add 1024 to the specified cylinder
  4667.       number to get the actual cylinder number desired
  4668. Notes:    the flag is cleared by all INT 13 calls except AH=EEh and AH=EFh
  4669.     Disk Manager also supports these calls
  4670.     this function is also supported by HyperDisk v4.01+ and PC-Cache v5.5+,
  4671.       in order to allow caching of drives using SWBIOS to access more than
  4672.       1024 cylinders
  4673.     for software which supports that call, this function is equivalent to
  4674.       calling AH=EFh with CX=0400h
  4675. SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AX=DF00h
  4676. Index:    PC-Cache;huge disks|Disk Manager
  4677. --------c-13EF-------------------------------
  4678. INT 13 - Ontrack Drive Rocket - SET CYLINDER OFFSET
  4679.     AH = EFh
  4680.     CX = cylinder offset for next INT 13 call
  4681.     DL = drive number (80h, 81h)
  4682. Return: CF clear
  4683.         AH = 00h
  4684. Program: Drive Rocket is a drive accelerator by Ontrack Computer Systems for
  4685.       IDE drives supporting the read multiple and write multiple commands
  4686. Desc:    the following INT 13 call will add the number given by this call to
  4687.       the specified cylinder to get the actual cylinder number, then reset
  4688.       the offset to zero
  4689. Note:    this function is also supported by the NOW! disk cache, and presumably
  4690.       newer versions of SWBIOS and Disk Manager
  4691.     for software which supports this call, AH=EEh is equivalent to calling
  4692.       this function with CX=0400h
  4693.     the cylinder offset is reset to 0 by all INT 13 called except AH=EEh
  4694.       and AH=EFh
  4695. SeeAlso: AX=7B00h
  4696. --------v-13F2-------------------------------
  4697. INT 13 - VIRUS - "Neuroquila" - INSTALLATION CHECK
  4698.     AH = F2h
  4699. Return: CF ??? if installed
  4700. SeeAlso: AX=EC00h,INT 12/AX=4350h/BX=4920h,INT 21/AX=0B56h
  4701. --------d-13F9-------------------------------
  4702. INT 13 - SWBIOS - INSTALLATION CHECK
  4703.     AH = F9h
  4704.     DL = drive number (80h,81h)
  4705. Return: CF clear
  4706.         DX = configuration word
  4707.         bit 15 set if other SWBIOS extensions available
  4708.     CF set on error
  4709. Program: SWBIOS is a TSR by Ontrack Computer Systems
  4710.     XBIOS is a driver in some versions of Disk Manager that is
  4711.       loaded from the disk MBR, replacing the ROM BIOS disk support
  4712.       eg adding LBA mode support, and read/write multiple.
  4713. Note:    Disk Manager also supports these calls
  4714. SeeAlso: AH=EEh,AX=E000h"XBIOS",AH=FFh"EZ-Drive"
  4715. Index:    Disk Manager
  4716. --------v-13FA--DX5945-----------------------
  4717. INT 13 - PC Tools v8+ VSAFE, VWATCH - API
  4718.     AH = FAh
  4719.     DX = 5945h
  4720.     AL = function (00h-07h)
  4721. Return: varies by function
  4722.     if not installed:
  4723.         CF set
  4724.         AH = 01h
  4725. Note:    this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh,
  4726.       so it is listed in its entirety under INT 16/AX=FA00h and following
  4727. SeeAlso: INT 16/AX=FA00h
  4728. --------v-13FD50------------------------
  4729. INT 13 - VIRUS - "Predator" - INSTALLATION CHECK
  4730.     AX = FD50h
  4731. Return: AX = 50FDh if resident
  4732. SeeAlso: AX=5001h"VIRUS",INT 16/AH=DDh"VIRUS"
  4733. --------d-13FE-------------------------------
  4734. INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
  4735.     AH = FEh
  4736.     DL = drive number (80h, 81h)
  4737. Return: CF clear
  4738.     DX = number of cylinders beyond 1024 on drive
  4739. Program: SWBIOS is a TSR by Ontrack Computer Systems
  4740. Notes:    standard INT 13/AH=08h will return a cylinder count truncated to 1024
  4741.     BIOS without this extension would return count modulo 1024
  4742.     Disk Manager also supports these calls
  4743. SeeAlso: AH=EEh
  4744. ----------13FF-------------------------------
  4745. INT 13 - EZ-Drive - INSTALLATION CHECK
  4746.     AH = FFh
  4747.     DL = drive number (80h)
  4748. Return: CF clear
  4749.         AX = AA55h
  4750.         ES:BX -> string "AERMH13Vxx", where xx is the version number of
  4751.           the EZ-Drive driver
  4752.     CF set on error
  4753. Program: EZ-Drive is a driver by Micro House that is loaded from the
  4754.       hard disk MBR, replacing the ROM BIOS disk support, eg adding
  4755.       LBA mode support, and read/write multiple.
  4756. Note:    this function is called by the Windows95 Master Boot Record
  4757. SeeAlso: AX=E000h"XBIOS",AH=F9h"SWBIOS"
  4758. --------B-13FF-------------------------------
  4759. INT 13 - IBM SurePath BIOS - Officially "Private" Function
  4760.     AH = FFh
  4761. --------U-13FFFFBHAA-------------------------
  4762. INT 13 - UNIQUE UX Turbo Utility - SET TURBO MODE
  4763.     AX = FFFFh
  4764.     BH = AAh
  4765.     BL = subfunction
  4766.         00h installation check
  4767.         Return: AX = 1234h if installed
  4768.         01h turn on Turbo mode
  4769.         02h turn off Turbo mode
  4770.         03h set Turbo mode according to hardware switch
  4771.         04h set disk access to Turbo mode
  4772.         05h set disk access to Normal mode
  4773. Return: nothing
  4774. SeeAlso: INT 15/AH=DFh
  4775. Index:    installation check;UNIQUE UX Turbo Utility
  4776. --------S-14---------------------------------
  4777. INT 14 - SERIAL - Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
  4778. InstallCheck:    determine whether the "~DOSXAM~" character device exists
  4779. Index:    installation check;Digiboard DigiCHANNEL
  4780. --------S-1400-------------------------------
  4781. INT 14 - SERIAL - INITIALIZE PORT
  4782.     AH = 00h
  4783.     AL = port parameters (see #00300)
  4784.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  4785. Return: AH = line status (see #00304)
  4786.         FFh if error on Digiboard XAPCM232.SYS
  4787.     AL = modem status (see #00305)
  4788. Notes:    default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
  4789.     since the PCjr supports a maximum of 4800 bps, attempting to set 9600
  4790.       bps will result in 4800 bps
  4791.     various network and serial-port drivers support the standard BIOS
  4792.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  4793.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  4794. SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AH=57h
  4795. SeeAlso: AX=8000h"ARTICOM",AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch
  4796. SeeAlso: MEM 0040h:0000h,PORT 03F8h"Serial"
  4797.  
  4798. Bitfields for serial port parameters:
  4799. Bit(s)    Description    (Table 00300)
  4800.  7-5    data rate (110,150,300,600,1200,2400,4800,9600 bps)
  4801.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  4802.  2    stop bits (set = 2, clear = 1)
  4803.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  4804. SeeAlso: #00302,#00307,#00308,#00309
  4805. --------S-1400-------------------------------
  4806. INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
  4807.     AH = 00h
  4808.     AL = initializing parameters
  4809.         7 - 6 - 5       4 - 3     2      1 - 0
  4810.         -BAUD RATE-       PARITY   STOP   WORD
  4811.                     BITS  LENGTH
  4812.         000 19200 bd   00 none  0: 1  00: 5
  4813.         001 38400 bd   01 odd   1: 2  01: 6
  4814.         010      300 bd   11 even      10: 7
  4815.         011      600 bd          11: 8
  4816.         100     1200 bd
  4817.         101     2400 bd
  4818.         110     4800 bd
  4819.         111     9600 bd (4800 on PCjr)
  4820.     DX = port number (0-3 or FFh if only performing non-I/O setup)
  4821. Return: AH = RS-232 status code bits (see #00301)
  4822.     AL = modem status bits
  4823.         bit 3: always 1
  4824.         bit 7: DCD - carrier detect
  4825. SeeAlso: #00300,AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS"
  4826.  
  4827. Bitfields for FOSSIL RS-232 status:
  4828. Bit(s)    Description    (Table 00301)
  4829.  0    RDA - input data is available in buffer
  4830.  1    OVRN - data has been lost
  4831.  5    THRE - room is available in output buffer
  4832.  6    TSRE - output buffer empty
  4833. --------S-1400-------------------------------
  4834. INT 14 - Tandy 2000 - SERIAL - RESET COMM PORT
  4835.     AH = 00h
  4836.     AL = RS-232C parameters (see #00302)
  4837.     DL = port number
  4838.     DH = protocol
  4839.         bit 0: use XON/XOFF on received data
  4840.         bit 1: use XON/XOFF when transmitting
  4841. Return: AH = line status (see #00304)
  4842.     AL = modem status (see #00305)
  4843. Note:    this interrupt is identical to INT 53 on the Tandy 2000
  4844. SeeAlso: AH=04h"Tandy 2000",INT 53"Tandy 2000"
  4845. --------S-1400-------------------------------
  4846. INT 14 - MBBIOS - INITIALIZE PORT
  4847.     AH = 00h
  4848.     AL = port parameters (see #00302)
  4849.     DX = port number
  4850. Return: AH = line status (see #00304)
  4851.     AL = modem status (see #00305)
  4852. Note:    MBBIOS was written by H. Roy Engehausen
  4853. SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS",AH=09h"MBBIOS"
  4854.  
  4855. Bitfields for MBBIOS port parameters:
  4856. Bit(s)    Description    (Table 00302)
  4857.  7-5    data rate
  4858.     (normally 110,150,300,600,1200,2400,4800,9600 bps;
  4859.     9600,14400,19200,28800,38400,57600,115200,330400 bps
  4860.     if the high-speed option is set)
  4861.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  4862.  2    stop bits (set = 2, clear = 1)
  4863.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  4864. SeeAlso: #00300
  4865. --------N-1400--DXFFFF-----------------------
  4866. INT 14 - Connection Manager - MODIFY DEFAULT CONNECTION PARAMETERS
  4867.     AH = 00h
  4868.     DX = FFFFh
  4869.     ES:DI -> vector string specifying new parameters
  4870. Return: AH = return code (00h,03h) (see #00303)
  4871. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4872.       serial ports over an IPX or NetBIOS-based network
  4873. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  4874.       function, but redirects the port over the network; if DX is any other
  4875.       value, the call is chained
  4876. SeeAlso: AH=04h/DX=FFFFh,AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  4877.  
  4878. (Table 00303)
  4879. Values for Connection Manager return code:
  4880.  00h    successful
  4881.  01h    no such connection
  4882.  02h    invalid connection ID
  4883.  03h    invalid subvector found
  4884.  04h    communication error (check BH)
  4885.  06h    insufficient resources, retry later
  4886.  FFh    no data available
  4887. --------S-1401-------------------------------
  4888. INT 14 - SERIAL - WRITE CHARACTER TO PORT
  4889.     AH = 01h
  4890.     AL = character to write
  4891.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  4892. Return: AH bit 7 clear if successful
  4893.     AH bit 7 set on error
  4894.     AH bits 6-0 = port status (see #00304)
  4895. Notes:    various network and serial-port drivers support the standard BIOS
  4896.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  4897.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  4898. SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h,MEM 0040h:007Ch
  4899. --------N-1401--DXFFFF-----------------------
  4900. INT 14 - Connection Manager - SEND CHARACTER
  4901.     AH = 01h
  4902.     DX = FFFFh
  4903.     BH = character to send
  4904. Return: AH = return code (00h-02h,06h) (see #00303)
  4905. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  4906.       function, but redirects the port over the network; if DX is any other
  4907.       value, the call is chained
  4908.     this function is provided primarily for compatibility; AH=06h/DX=FFFFh
  4909.       is the preferred function because it provides better performance
  4910. SeeAlso: AH=02h/DX=FFFFh,AH=06h/DX=FFFFh,AH=09h/DX=FFFFh
  4911. --------S-1402-------------------------------
  4912. INT 14 - SERIAL - READ CHARACTER FROM PORT
  4913.     AH = 02h
  4914.     AL = 00h (ArtiCom)
  4915.     DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
  4916. Return: AH = line status (see #00304)
  4917.     AL = received character if AH bit 7 clear
  4918. Notes:    will timeout if DSR is not asserted, even if function 03h returns
  4919.       data ready
  4920.     various network and serial-port drivers support the standard BIOS
  4921.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  4922.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  4923. SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
  4924. --------S-1402-------------------------------
  4925. INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
  4926.     AH = 02h
  4927.     DX = port number (0-3)
  4928. Return: AL = character received
  4929.     AH = 00h
  4930. SeeAlso: AH=01h,AH=02h"SERIAL"
  4931. --------N-1402--DXFFFF-----------------------
  4932. INT 14 - Connection Manager - RECEIVE CHARACTER
  4933.     AH = 02h
  4934.     DX = FFFFh
  4935.     BH = character to send
  4936. Return: AH = return code (00h-02h,04h,FFh) (see #00303)
  4937.     BH = line status (see #00304)
  4938.     AL = received character (if any)
  4939. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  4940.       function, but redirects the port over the network; if DX is any other
  4941.       value, the call is chained
  4942.     this function is provided primarily for compatibility; AH=07h/DX=FFFFh
  4943.       is the preferred function because it provides better performance
  4944. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh,AH=06h/DX=FFFFh
  4945. --------S-1403-------------------------------
  4946. INT 14 - SERIAL - GET PORT STATUS
  4947.     AH = 03h
  4948.     AL = 00h (ArtiCom)
  4949.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  4950. Return: AH = line status (see #00304)
  4951.     AL = modem status (see #00305)
  4952.     AX = 9E00h if disconnected (ArtiCom)
  4953. Note:    the 04/08/93 Compaq system ROM uses only the low two bits of DX
  4954. SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h
  4955.  
  4956. Bitfields for serial line status:
  4957. Bit(s)    Description    (Table 00304)
  4958.  7    timeout
  4959.  6    transmit shift register empty
  4960.  5    transmit holding register empty
  4961.  4    break detected
  4962.  3    framing error
  4963.  2    parity error
  4964.  1    overrun error
  4965.  0    receive data ready
  4966. Note:    for COMM-DRV, if bit 7 is set, an error occurred, and may be retrieved
  4967.       through a separate call (see AX=8000h"COMM-DRV")
  4968.  
  4969. Bitfields for modem status:
  4970. Bit(s)    Description    (Table 00305)
  4971.  7    carrier detect
  4972.  6    ring indicator
  4973.  5    data set ready
  4974.  4    clear to send
  4975.  3    delta carrier detect
  4976.  2    trailing edge of ring indicator
  4977.  1    delta data set ready
  4978.  0    delta clear to send
  4979. --------N-1403--DXFFFF-----------------------
  4980. INT 14 - Connection Manager - RETURN COMMUNICATION PORT STATUS
  4981.     AH = 03h
  4982.     DX = FFFFh
  4983.     AL = connection ID
  4984. Return: AH = return code (00h-02h) (see #00303)
  4985.     BH = line status (see #00306)
  4986.     BL = modem status (see #00305) (only bits 4,5,7; all others zero)
  4987. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  4988.       function, but redirects the port over the network; if DX is any other
  4989.       value, the call is chained
  4990. SeeAlso: AH=00h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Ah/DX=FFFFh
  4991.  
  4992. Bitfields for Connection Manager line status:
  4993. Bit(s)    Description    (Table 00306)
  4994.  7    CTS changed
  4995.  6    current CTS state
  4996.  5    timeout
  4997.  4    break
  4998.  3    framing error
  4999.  2    parity error
  5000.  1    overrun
  5001.  0    current carrier state (0 active, 1 no carrier)
  5002. --------S-1404-------------------------------
  5003. INT 14 - SERIAL - EXTENDED INITIALIZE (CONVERTIBLE,PS)
  5004.     AH = 04h
  5005.     AL = break status
  5006.         00h if break
  5007.         01h if no break
  5008.     BH = parity (see #00307)
  5009.     BL = number of stop bits
  5010.         00h one stop bit
  5011.         01h two stop bits (1.5 if 5 bit word length)
  5012.     CH = word length (see #00308)
  5013.     CL = bps rate (see #00309)
  5014.     DX = port number
  5015. Return: AX = port status code (see #00304,#00305)
  5016. SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
  5017.  
  5018. (Table 00307)
  5019. Values for serial port parity:
  5020.  00h    no parity
  5021.  01h    odd parity
  5022.  02h    even parity
  5023.  03h    stick parity odd
  5024.  04h    stick parity even
  5025. SeeAlso: #00300,#00308,#00309,#00310
  5026.  
  5027. (Table 00308)
  5028. Values for serial port word length:
  5029.  00h    5 bits
  5030.  01h    6 bits
  5031.  02h    7 bits
  5032.  03h    8 bits
  5033. SeeAlso: #00300,#00307,#00309,#00345
  5034.  
  5035. (Table 00309)
  5036. Values for serial port bps rate:
  5037.  00h    110 (19200 if ComShare installed)
  5038.  01h    150 (38400 if ComShare installed)
  5039.  02h    300
  5040.  03h    600 (14400 if ComShare installed)
  5041.  04h    1200
  5042.  05h    2400
  5043.  06h    4800 (28800 if ComShare installed)
  5044.  07h    9600
  5045.  08h    19200
  5046. ---ComShare---
  5047.  09h    38400
  5048.  0Ah    57600
  5049.  0Bh    115200
  5050. SeeAlso: #00300,#00307,#00309,#00346,#00353,AH=36h,#00364,#00606,#02923
  5051. --------S-1404-------------------------------
  5052. INT 14 - Tandy 2000 - SERIAL - FLUSH COMM BUFFER
  5053.     AH = 04h
  5054.     DL = port number
  5055.     DH = protocol
  5056.         bit 0: use XON/XOFF on received data
  5057.         bit 1: use XON/XOFF when transmitting
  5058. Return: nothing
  5059. Desc:    clears the serial interface buffer
  5060. Note:    this interrupt is identical to INT 53 on the Tandy 2000
  5061. SeeAlso: AH=00h"Tandy 2000",INT 53"Tandy 2000"
  5062. --------S-1404-------------------------------
  5063. INT 14 - FOSSIL - INITIALIZE DRIVER
  5064.     AH = 04h
  5065.     DX = port number
  5066.     optionally BX=4F50h
  5067.            ES:CX -> byte to be set upon ^C
  5068. Return: AX = 1954h (if successful)
  5069.     BL = maximum function number supported (excluding 7Eh and above)
  5070.     BH = revision of FOSSIL specification supported
  5071.     DTR is raised
  5072. Note:    the word at offset 6 in the interrupt handler contains 1954h, and the
  5073.       following byte contains the maximum function number supported; this
  5074.       can serve as an installation check
  5075. SeeAlso: AH=05h"FOSSIL",AH=1Ch,INT 11/AH=BCh
  5076. Index:    installation check;FOSSIL
  5077. --------S-1404-------------------------------
  5078. INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
  5079.     AH = 04h
  5080. Return: port initialized; if Hayes-compatible modem, a connection has been
  5081.       established
  5082. Note:    the port number is stored at offset BEh in the Task Control Block
  5083.       (see #00456 at INT 15/AH=13h"MultiDOS")
  5084. SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
  5085. --------S-1404-------------------------------
  5086. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
  5087.     AH = 04h
  5088.     AL = initializing parameters (see #00310)
  5089.     BX = baud rate
  5090.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5091. Return: AH = status
  5092.         00h successful
  5093.         FFh error
  5094. SeeAlso: AH=05h"Digiboard"
  5095.  
  5096. Bitfields for Digiboard initializing parameters:
  5097. Bit(s)    Description    (Table 00310)
  5098.  7-5    unused
  5099.  4-3    parity (00 none, 01 odd, 11 even)
  5100.  2    stop bits (0 = one, 1 = two)
  5101.  1-0    data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
  5102. SeeAlso: #00307,#00308
  5103. --------S-1404-------------------------------
  5104. INT 14 - MBBIOS - INSTALLATION CHECK
  5105.     AH = 04h
  5106.     DX = port number
  5107. Return: AX = AA55h if installed on specified port
  5108. SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS"
  5109. --------N-1404--DXFFFF-----------------------
  5110. INT 14 - Connection Manager - OPEN COMMUNICATION
  5111.     AH = 04h
  5112.     DX = FFFFh
  5113.     ES:DI -> Connection Request protocol vector (see #00311)
  5114. Return: AH = return code
  5115.         00h successful
  5116.         AL = connection ID
  5117.         BH = connection type
  5118.             00h direct connection or no dialing
  5119.             01h Connection Server dialed phone
  5120.         01h no response from Connection Server
  5121.         03h invalid request
  5122. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  5123.       serial ports over an IPX or NetBIOS-based network
  5124. Desc:    initiate a connection to the Connection Server listed in the current
  5125.       Client parameter set
  5126. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  5127.       function, but redirects the port over the network; if DX is any other
  5128.       value, the call is chained
  5129.     all subvectors of the Connection Request vector are optional; if
  5130.       missing, default values are provided by the default connection
  5131.       parameter set
  5132. SeeAlso: AH=00h/DX=FFFFh,AH=05h/DX=FFFFh,AH=06h/DX=FFFFh,AH=07h/DX=FFFFh
  5133. SeeAlso: AH=0Ah/DX=FFFFh,AH=0Ch/DX=FFFFh
  5134.  
  5135. Format of Connection Manager protocol command vector:
  5136. Offset    Size    Description    (Table 00311)
  5137.  00h    WORD    (big-endian) total length of command (including this word)
  5138.  02h    WORD    (big-endian) command code
  5139.         EF01h Connection Request
  5140.         EF06h Modify Connection Parameters
  5141.  04h  N BYTEs    list of subvectors (see #00313)
  5142.         allowable subvector types are 01h-04h,17h,18h for command code
  5143.           EF01h; 03h,04h for command code EF06h (see #00312)
  5144.  
  5145. (Table 00312)
  5146. Values for Connection Manager subvector type code:
  5147.  01h    Connection ID
  5148.  02h    Destination ID
  5149.  03h    Asynchronous line parameters
  5150.  04h    Data transfer parameters
  5151.  09h    Line speed
  5152.  0Ah    Serial coding
  5153.  0Bh    Packet size
  5154.  0Ch    Timers
  5155.  0Dh    Special characters
  5156.  0Eh    Target ID
  5157.  0Fh    Telephone number
  5158.  10h    ASCII destination ID
  5159.  11h    Parity
  5160.  12h    Bits per character
  5161.  13h    Number of stop bits
  5162.  14h    Packet timer
  5163.  15h    Intercharacter timer
  5164.  17h    Flags
  5165.  18h    Parameter ranges
  5166.  19h    Flow control
  5167.  
  5168. Format of Connection Manager subvector:
  5169. Offset    Size    Description    (Table 00313)
  5170.  00h    BYTE    length of subvector
  5171.  01h    BYTE    type code (see #00312)
  5172.  02h N-2 BYTEs    data, which may include subvectors
  5173. SeeAlso: #00314,#00315,#00316,#00317,#00318,#00319,#00320,#00321,#00322,#00323,#00324
  5174. SeeAlso: #00325,#00326,#00328,#00329,#00330,#00331,#00332,#00333,#00311
  5175.  
  5176. Format of Connection ID subvector:
  5177. Offset    Size    Description    (Table 00314)
  5178.  00h    BYTE    03h (length)
  5179.  01h    BYTE    01h (subvector "Connection ID")
  5180.  02h    BYTE    connection ID
  5181. SeeAlso: #00313
  5182.  
  5183. Format of Destination ID subvector:
  5184. Offset    Size    Description    (Table 00315)
  5185.  00h    BYTE    length
  5186.  01h    BYTE    02h (subvector "Destination ID")
  5187.  02h  N BYTEs    subvector(s) of type 0Eh, 0Fh, or 10h
  5188. SeeAlso: #00313
  5189.  
  5190. Format of Asynchronous line parameters subvector:
  5191. Offset    Size    Description    (Table 00316)
  5192.  00h    BYTE    length
  5193.  01h    BYTE    03h (subvector "Asynchronous line parameters")
  5194.  02h  N BYTEs    subvector(s) of type 09h, 0Ah, or 19h
  5195. SeeAlso: #00313
  5196.  
  5197. Format of Data transfer parameters subvector:
  5198. Offset    Size    Description    (Table 00317)
  5199.  00h    BYTE    length
  5200.  01h    BYTE    04h (subvector "Data transfer parameters")
  5201.  02h  N BYTEs    subvector(s) of type 0Bh, 0Ch, or 0Dh
  5202. SeeAlso: #00313
  5203.  
  5204. Format of Line speed subvector:
  5205. Offset    Size    Description    (Table 00318)
  5206.  00h    BYTE    04h (length)
  5207.  01h    BYTE    09h (subvector "Line speed")
  5208.  02h    WORD    bit map, highest set bit selects speed
  5209.         bit 0: 2400
  5210.         bits 1-7: 1800, 1200, 600, 300, 115200, 150, 110 bps
  5211.         bits 8-15: 57600, 38400, 19200, 14400, 9600, 7200, 4800, 3600
  5212. SeeAlso: #00313
  5213.  
  5214. Format of Serial coding subvector:
  5215. Offset    Size    Description    (Table 00319)
  5216.  00h    BYTE    length
  5217.  01h    BYTE    0Ah (subvector "Serial coding")
  5218.  02h  N BYTEs    subvector(s) of type 11h, 12h, or 13h
  5219. SeeAlso: #00313
  5220.  
  5221. Format of Packet size subvector:
  5222. Offset    Size    Description    (Table 00320)
  5223.  00h    BYTE    04h (length)
  5224.  01h    BYTE    0Bh (subvector "Packet size")
  5225.  02h    WORD    (big-endian) packet size, 1 to 1024
  5226. SeeAlso: #00313
  5227.  
  5228. Format of Timers subvector:
  5229. Offset    Size    Description    (Table 00321)
  5230.  00h    BYTE    length
  5231.  01h    BYTE    0Ch (subvector "Timers")
  5232.  02h  8 BYTEs    subvector of type 14h or 15h
  5233. SeeAlso: #00313
  5234.  
  5235. Format of Special characters subvector:
  5236. Offset    Size    Description    (Table 00322)
  5237.  00h    BYTE    length
  5238.  01h    BYTE    0Dh (subvector "Special characters")
  5239.  02h  N BYTEs    list of ASCII characters to be used as EOM or EOB
  5240. SeeAlso: #00313
  5241.  
  5242. Format of Target ID:
  5243. Offset    Size    Description    (Table 00323)
  5244.  00h    BYTE    length
  5245.  01h    BYTE    0Eh (subvector "Target ID")
  5246.  02h  N BYTEs    target ID, 1-16 bytes
  5247. SeeAlso: #00313
  5248.  
  5249. Format of Telephone number subvector:
  5250. Offset    Size    Description    (Table 00324)
  5251.  00h    BYTE    length
  5252.  01h    BYTE    0Fh (subvector "Telephone number")
  5253.  02h  N BYTEs    telephone number
  5254. SeeAlso: #00313
  5255.  
  5256. Format of ASCII destination ID subvector:
  5257. Offset    Size    Description    (Table 00325)
  5258.  00h    BYTE    length
  5259.  01h    BYTE    10h (subvector "ASCII destination ID")
  5260.  02h  N BYTEs    destination ID
  5261. SeeAlso: #00313
  5262.  
  5263. Format of Parity subvector:
  5264. Offset    Size    Description    (Table 00326)
  5265.  00h    BYTE    03h (length)
  5266.  01h    BYTE    11h (subvector "Parity")
  5267.  02h    BYTE    parity type (see #00327)
  5268. SeeAlso: #00313
  5269.  
  5270. Bitfields for Connection Manager parity type:
  5271. Bit(s)    Description    (Table 00327)
  5272.  7    odd
  5273.  6    even
  5274.  5    mark
  5275.  4    space
  5276.  3    none
  5277. SeeAlso: #00326
  5278.  
  5279. Format of Bits per character subvector:
  5280. Offset    Size    Description    (Table 00328)
  5281.  00h    BYTE    03h (length)
  5282.  01h    BYTE    12h (subvector "Bits per character")
  5283.  02h    BYTE    bits per character
  5284.         bit 7: seven
  5285.         bit 6: eight
  5286. SeeAlso: #00313
  5287.  
  5288. Format of Number of stop bits subvector:
  5289. Offset    Size    Description    (Table 00329)
  5290.  00h    BYTE    03h (length)
  5291.  01h    BYTE    13h (subvector "Number of stop bits")
  5292.  02h    BYTE    stop bits
  5293.         bit 7: one
  5294.         bit 6: 1.5
  5295.         bit 5: two
  5296. SeeAlso: #00313
  5297.  
  5298. Format of Packet timer and Intercharacter timer subvectors:
  5299. Offset    Size    Description    (Table 00330)
  5300.  00h    BYTE    04h (length)
  5301.  01h    BYTE    subvector type
  5302.         14h Packet timer
  5303.         15h Intercharacter timer
  5304.  02h    WORD    (big-endian) unit of value representing 20ms
  5305. SeeAlso: #00313
  5306.  
  5307. Format of Flags subvector:
  5308. Offset    Size    Description    (Table 00331)
  5309.  00h    BYTE    03h (length)
  5310.  01h    BYTE    17h (subvector "Flags")
  5311.  02h    BYTE    flags
  5312.         bit 7: queueing requested
  5313. SeeAlso: #00313
  5314.  
  5315. Format of Parameter ranges subvector:
  5316. Offset    Size    Description    (Table 00332)
  5317.  00h    BYTE    length
  5318.  01h    BYTE    18h (subvector "Parameter ranges")
  5319.  02h  N BYTEs    subvector(s) of type 09h, 11h, 12h, or 13h
  5320. SeeAlso: #00313
  5321.  
  5322. Format of Flow control subvector:
  5323. Offset    Size    Description    (Table 00333)
  5324.  00h    BYTE    length (02h-04h)
  5325.  01h    BYTE    19h (subvector "Flow control")
  5326.  02h    BYTE    XOFF character
  5327.  03h    BYTE    XON character
  5328. Note:    if length is 02h, flow control is disabled; if length is 03h, any
  5329.       character will be accepted as XON after an XOFF
  5330. SeeAlso: #00313
  5331. --------S-140400-----------------------------
  5332. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INSTALLATION CHECK
  5333.     AX = 0400h
  5334. Return: AX = 0FF0h
  5335. SeeAlso: AX=0401h,AX=0408h
  5336. --------S-140401-----------------------------
  5337. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INITIALIZE MODE
  5338.     AX = 0401h
  5339.     CX = mode
  5340. Return: nothing
  5341. SeeAlso: AX=0400h,AX=0402h
  5342. --------S-140402-----------------------------
  5343. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - EXTENDED INITIALIZE
  5344.     AX = 0402h
  5345.     CL = parameters
  5346. Return: nothing
  5347. SeeAlso: AX=0400h,AX=0401h
  5348. --------S-140403-----------------------------
  5349. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - SET TIMEOUT
  5350.     AX = 0403h
  5351.     CX = timeout
  5352. Return: nothing
  5353. SeeAlso: AX=0400h
  5354. --------S-140404-----------------------------
  5355. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE RECEIVE BUFFER
  5356.     AX = 0404h
  5357. Return: nothing
  5358. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  5359. --------S-140405-----------------------------
  5360. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET RECEIVE BUFFER COUNT
  5361.     AX = 0405h
  5362. Return: AX = number of characters in buffer
  5363. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  5364. --------S-140406-----------------------------
  5365. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE TRANSMIT BUFFER
  5366.     AX = 0406h
  5367. Return: nothing
  5368. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  5369. --------S-140407-----------------------------
  5370. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET TRANSMIT BUFFER COUNT
  5371.     AX = 0407h
  5372. Return: AX = number of characters in the buffer
  5373. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  5374. --------S-140408-----------------------------
  5375. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - UNINSTALL
  5376.     AX = 0408h
  5377. Return: nothing
  5378. SeeAlso: AX=0400h
  5379. --------S-1405-------------------------------
  5380. INT 14 - SERIAL - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
  5381.     AH = 05h
  5382.     AL = function
  5383.         00h read modem control register
  5384.           Return: BL = modem control register (see #00334)
  5385.               AH = status
  5386.         01h write modem control register
  5387.           BL = modem control register (see #00334)
  5388.           Return: AX = status
  5389.     DX = port number
  5390. Note:    also supported by ArtiCom
  5391. SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM",AH=FBh
  5392.  
  5393. Bitfields for modem control register:
  5394. Bit(s)    Description    (Table 00334)
  5395.  0    data terminal ready
  5396.  1    request to send
  5397.  2    OUT1
  5398.  3    OUT2
  5399.  4    LOOP
  5400.  5-7    reserved
  5401. --------S-1405-------------------------------
  5402. INT 14 - FOSSIL - DEINITIALIZE DRIVER
  5403.     AH = 05h
  5404.     DX = port number
  5405. Return: none
  5406.     DTR is not affected
  5407. SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
  5408. --------S-1405-------------------------------
  5409. INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
  5410.     AH = 05h
  5411.     AL = timeout in seconds (00h = never)
  5412. Return: AL = status
  5413.         00h successful
  5414.         AH = character read
  5415.         01h read error
  5416.         02h timed out
  5417.         other modem status (CTS, DSR) changed
  5418. Note:    the port number is stored at offset BEh in the Task Control Block
  5419. SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
  5420. SeeAlso: INT 15/AH=13h"MultiDOS"
  5421. --------S-1405-------------------------------
  5422. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
  5423.     AH = 05h
  5424.     AL = protocol (see #00335)
  5425.     BH = new XOFF character (00h = current)
  5426.     BL = new XON character (00h = current)
  5427.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5428. Return: AH = status
  5429.         00h successful
  5430.         FFh error
  5431. SeeAlso: AH=04h"Digiboard"
  5432.  
  5433. Bitfields for Digiboard protocol:
  5434. Bit(s)    Description    (Table 00335)
  5435.  7-4    unused
  5436.  3    RTS/CTS
  5437.  2    DSR
  5438.  1,0    XON/XOFF
  5439. --------S-1405-------------------------------
  5440. INT 14 - MBBIOS - DROP DTR AND RTS
  5441.     AH = 05h
  5442.     DX = port number
  5443. Return: none
  5444. SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL"
  5445. --------S-1405-------------------------------
  5446. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHANGE PORT PROTOCOL
  5447.     AH = 05h
  5448.     AL = new port protocol (see #00336)
  5449.     BH = new XOFF character
  5450.     BL = new XON character
  5451.     DX = port number
  5452. Return: AH = FFh if invalid protocol
  5453. SeeAlso: AH=00h,AH=04h"SERIAL",AH=06h"PC-MOS"
  5454.  
  5455. Bitfields for PC-MOS/386 serial port protocol:
  5456. Bit(s)    Description    (Table 00336)
  5457.  7    set to enable/disable CD monitoring, clear to set protocol
  5458. ---bit 7 set---
  5459.  4    CD monitoring enabled
  5460.  5    automatic restart enabled
  5461. ---bit 7 clear---
  5462.  0    receive XON/XOFF
  5463.  1    transmit XON/XOFF
  5464.  2    DTR/DSR
  5465.  3    RTS/CTS
  5466. --------N-1405--DXFFFF-----------------------
  5467. INT 14 - Connection Manager - CLOSE COMMUNICATION
  5468.     AH = 05h
  5469.     DX = FFFFh
  5470.     AL = connection ID
  5471. Return: AH = return code
  5472.         00h successful
  5473.         01h no such connection
  5474.         02h invalid connection ID
  5475.         AL = correct connection ID
  5476. Desc:    terminate existing connection to allow another one to be established
  5477. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  5478.       function, but redirects the port over the network; if DX is any other
  5479.       value, the call is chained
  5480. SeeAlso: AH=04h/DX=FFFFh,AH=0Dh/DX=FFFFh
  5481. --------S-1406-------------------------------
  5482. INT 14 - FOSSIL - RAISE/LOWER DTR
  5483.     AH = 06h
  5484.     DX = port
  5485.     AL = DTR state to be set
  5486.         00h = lower
  5487.         01h = raise
  5488. Return: nothing
  5489. SeeAlso: AH=05h"MBBIOS",AH=1Ah
  5490. --------S-1406-------------------------------
  5491. INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
  5492.     AH = 06h
  5493.     AL = character
  5494. Return: AL = status
  5495.         00h successful
  5496. Notes:    the port number is stored at offset BEh in the Task Control Block
  5497.     if output queue is full, the calling task is blocked until the
  5498.       character can be stored
  5499. SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
  5500. SeeAlso: INT 15/AH=13h"MultiDOS"
  5501. --------S-1406-------------------------------
  5502. INT 14 - MBBIOS - RAISE DTR AND RTS
  5503.     AH = 06h
  5504.     DX = port number
  5505. Return: none
  5506. SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS"
  5507. --------S-1406-------------------------------
  5508. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DRIVER 'ID' FUNCTION
  5509.     AH = 06h
  5510.     DX = port number
  5511. Return: AH bit 7 set
  5512.     AL = number of highest function supported by driver
  5513. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  5514.       operating system by The Software Link, Inc.
  5515. SeeAlso: AH=18h"PC-MOS"
  5516. --------N-1406-------------------------------
  5517. INT 14 - TelAPI - WRITE BLOCK
  5518.     AH = 06h
  5519.     CX = number of characters to write
  5520.     DX = port number
  5521.     ES:DI -> buffer containing data
  5522. Return: AX = number of characters actually sent (negative on error)
  5523.     CX = ???
  5524. SeeAlso: AH=07h"TelAPI",AH=E0h"TelAPI",AH=E3h"TelAPI"
  5525. --------N-1406--DXFFFF-----------------------
  5526. INT 14 - Connection Manager - SEND CHARACTER BLOCK
  5527.     AH = 06h
  5528.     DX = FFFFh
  5529.     AL = connection ID
  5530.     CX = number of characters to send
  5531.     ES:DI -> buffer containing data to be sent
  5532. Return: AH = return code (see #00303)
  5533. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  5534.       serial ports over an IPX or NetBIOS-based network
  5535. SeeAlso: AH=04h/DX=FFFFh,AH=07h/DX=FFFFh,AH=09h/DX=FFFFh
  5536. --------S-1407-------------------------------
  5537. INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
  5538.     AH = 07h
  5539. Return: AL = timer tick interrupt number
  5540.     AH = ticks per second on interrupt number in AL
  5541.     DX = approximate number of milliseconds per tick
  5542. SeeAlso: AH=16h
  5543. --------S-1407-------------------------------
  5544. INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
  5545.     AH = 07h
  5546. Return: CL = modem status (see #00305)
  5547.     CH = character at head of input queue (if any)
  5548.     DX = number of characters in input queue
  5549. Note:    the port number is stored at offset BEh in the Task Control Block
  5550. SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
  5551. SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
  5552. --------S-1407-------------------------------
  5553. INT 14 - MBBIOS - SEND BREAK
  5554.     AH = 07h
  5555.     DX = port number
  5556. Return: none
  5557. SeeAlso: AH=06h"MBBIOS",AH=FAh"EBIOS"
  5558. --------S-1407-------------------------------
  5559. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SEND RS-232 BREAK
  5560.     AH = 07h
  5561.     BX = duration of break in clock ticks
  5562.     DX = port number
  5563. Return: nothing
  5564. --------N-1407-------------------------------
  5565. INT 14 - TelAPI - READ BLOCK
  5566.     AH = 07h
  5567.     CX = length of buffer in bytes
  5568.     DX = port number
  5569.     ES:DI -> buffer for data
  5570. Return: AX > 0000h number of characters actually read
  5571.     AX = 0000h host has closed connection
  5572.     AX < 0000h error code (see #00397)
  5573.     CX = ???
  5574. Note:    translates CRLF into local EOL if the connection is in ASCII mode,
  5575.       negotiates various Telnet options, and immediately executes several
  5576.       different Telnet action commands
  5577. SeeAlso: AH=06h"TelAPI",AH=E0h"TelAPI",AH=E2h"TelAPI"
  5578. --------N-1407--DXFFFF-----------------------
  5579. INT 14 - Connection Manager - RECEIVE CHARACTER BLOCK
  5580.     AH = 07h
  5581.     DX = FFFFh
  5582.     AL = connection ID
  5583.     BL = flag
  5584.         00h wait for data
  5585.         nonzero do not wait if no data avaiable
  5586.     CX = size of receive buffer
  5587.     ES:DI -> buffer for received characters
  5588. Return: AH = return code (00h-02h,04h,FFh) (see #00303)
  5589.     BH = line status (see #00306)
  5590.     CX = number of characters received
  5591. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  5592.       serial ports over an IPX or NetBIOS-based network
  5593. SeeAlso: AH=01h/DX=FFFFh,AH=04h/DX=FFFFh,AH=06h/DX=FFFFh
  5594. --------S-1408-------------------------------
  5595. INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
  5596.     AH = 08h
  5597.     DX = port number
  5598. Return: nothing
  5599. SeeAlso: AH=09h"FOSSIL"
  5600. --------S-1408-------------------------------
  5601. INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
  5602.     AH = 08h
  5603. Return: AL = line status (see #00304)
  5604.     AH destroyed
  5605. Notes:    the port number is stored at offset BEh in the Task Control Block
  5606.     on every line status change, the line status is ORed with the line
  5607.       status accumulator; this function returns the accumulator and clears
  5608.       it
  5609. SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  5610. --------S-1408-------------------------------
  5611. INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
  5612.     AH = 08h
  5613.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5614. Return: AH = RS232 status bits (see #00304 at AH=03h)
  5615.     ZF set if no characters queued
  5616.     ZF clear if character available
  5617.         AL = next character
  5618. SeeAlso: AH=03h,AH=08h"PC-MOS",AH=09h"Digiboard",AH=14h"Digiboard"
  5619. --------S-1408-------------------------------
  5620. INT 14 - MBBIOS - NON-DESTRUCTIVE READ
  5621.     AH = 08h
  5622.     DX = port number
  5623. Return: AL = character (if AH bit 0 set)
  5624.     AH = status (see #00304)
  5625. SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL"
  5626. --------S-1408-------------------------------
  5627. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STATUS CHECK
  5628.     AH = 08h
  5629.     DX = port number
  5630. Return: CF set if carrier loss detected
  5631.     ZF set if input buffer empty
  5632.     ZF clear if characters available
  5633.         AL = next character dequeued
  5634. --------N-1408--DXFFFF-----------------------
  5635. INT 14 - Connection Manager - RETURN DEFAULT CONNECTION PARAMETERS
  5636.     AH = 08h
  5637.     DX = FFFFh
  5638.     CX = size of buffer for parameters or 0000h to get length
  5639.     ES:DI -> buffer for parameter vector (see #00311)
  5640. Return: AH = return code
  5641.         00h successful
  5642.         CX = number of bytes required (if CX=0000h on entry)
  5643.         CX = number of bytes omitted for lack of space (if CX nonzero)
  5644.         nonzero invalid request
  5645. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  5646.       serial ports over an IPX or NetBIOS-based network
  5647. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  5648. --------S-1409-------------------------------
  5649. INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
  5650.     AH = 09h
  5651.     DX = port number
  5652. Return: nothing
  5653. SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
  5654. --------S-1409-------------------------------
  5655. INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
  5656.     AH = 09h
  5657. Return: modem status byte cleared
  5658. Note:    the port number is stored at offset BEh in the Task Control Block
  5659. SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  5660. --------S-1409-------------------------------
  5661. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
  5662.     AH = 09h
  5663.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5664. Return: AH = status
  5665.         00h successful
  5666.         FFh error
  5667. SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
  5668. --------S-1409-------------------------------
  5669. INT 14 - MBBIOS - GET/SET OPTIONS
  5670.     AH = 09h
  5671.     AL = option byte (see #00337)
  5672.     DX = port number???
  5673. Return: AL = old option byte
  5674. SeeAlso: AH=00h"MBBIOS",AH=04h"MBBIOS",AH=10h"FOSSIL"
  5675.  
  5676. Bitfields for MBBIOS option byte:
  5677. Bit(s)    Description    (Table 00337)
  5678.  0    transmit buffering enabled
  5679.  2    hardware handshaking enabled
  5680.  5    high-speed option enabled (see AH=00h"MBBIOS",#00302)
  5681.  other    reserved
  5682. --------S-1409-------------------------------
  5683. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RESET I/O BUFFER POINTERS
  5684.     AH = 09h
  5685.     DX = port number
  5686. Return: nothing
  5687. SeeAlso: AH=13h"PC-MOS"
  5688. --------N-1409--DXFFFF-----------------------
  5689. INT 14 - Connection Manager - SEND BREAK
  5690.     AH = 09h
  5691.     DX = FFFFh
  5692.     AL = connection ID
  5693. Return: AH = return code (00h-02h) (see #00303 at AH=00h/DX=FFFFh)
  5694. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  5695.       serial ports over an IPX or NetBIOS-based network
  5696. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh
  5697. --------S-140A-------------------------------
  5698. INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
  5699.     AH = 0Ah
  5700.     DX = port number
  5701. Return: nothing
  5702. SeeAlso: AH=09h"FOSSIL",AH=85h
  5703. --------S-140A-------------------------------
  5704. INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
  5705.     AH = 0Ah
  5706.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5707. Return: AX = number of characters available in buffer
  5708. Note:    this function is also supported by the PC-MOS/386 v5.01 $serial.sys
  5709. SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
  5710. --------S-140A-------------------------------
  5711. INT 14 - MBBIOS - WRITE BUFFER
  5712.     AH = 0Ah
  5713.     CX = count
  5714.     ES:DI -> buffer (see #00338)
  5715. Return: AX = status (see #00304,#00305)
  5716.     CX = unsent character count
  5717.     DI updated
  5718. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI; instead, ES
  5719.       contains the segment of a buffer containing the packet to be sent,
  5720.       which by default will be freed once the packet has been sent.     Use
  5721.       AH=0Ch"MBBIOS" to allocate the buffer.
  5722. SeeAlso: AH=01h,AH=0Bh"MBBIOS",AH=0Ch"MBBIOS",AH=19h"FOSSIL"
  5723.  
  5724. Format of MBBIOS PACCOM buffer:
  5725. Offset    Size    Description    (Table 00338)
  5726.  00h 504 BYTEs    data area
  5727. 1F8h    WORD    length of data in data area
  5728. 1FAh    BYTE    flags/status
  5729.         bit 7: don't discard buffer after transmitting data
  5730.         bit 6: buffer has been transmitted
  5731. 1FBh    BYTE    reserved (0) for additional flags/status
  5732. 1FCh    WORD    user data
  5733. 1FEh    WORD    MBBIOS-internal pointer to next buffer
  5734. --------N-140A--DXFFFF-----------------------
  5735. INT 14 - Connection Manager - MODIFY ACTIVE CONNECTION PARAMETERS
  5736.     AH = 0Ah
  5737.     DX = FFFFh
  5738.     ES:DI -> vector string containing new parameters (see #00311)
  5739. Return: AH = return code (00h-03h,06h) (see #00303)
  5740. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  5741.       serial ports over an IPX or NetBIOS-based network
  5742. Note:    any subvectors valid for the Change Parameters command replace the
  5743.       existing values in the current set
  5744. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  5745. --------S-140B-------------------------------
  5746. INT 14 - FOSSIL - TRANSMIT NO WAIT
  5747.     AH = 0Bh
  5748.     AL = character
  5749.     DX = port number
  5750. Return: AX = result
  5751.         0000h character not accepted
  5752.         0001h character accepted
  5753. SeeAlso: AH=01h
  5754. --------S-140B-------------------------------
  5755. INT 14 - MBBIOS - READ BUFFER
  5756.     AH = 0Bh
  5757.     CX = size of buffer
  5758.     ES:DI -> buffer
  5759. Return: AH = composite line status (see #00304) formed by ORing all statuses
  5760.           on receive interrupts; bit 0 set if additional characters
  5761.           available
  5762.     AL = composite modem status (see #00305) formed by ORing all statuses
  5763.     CX = number of characters actually read
  5764.     DI updated
  5765. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI on call,
  5766.       instead returning ES set to the segment of the buffer containing a
  5767.       received packet, or 0000h if no packets available; the buffer may
  5768.       be freed with AH=0Ch"MBBIOS"
  5769. SeeAlso: AH=02h,AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=0Ch"MBBIOS",AH=18h"FOSSIL"
  5770. --------N-140B--DXFFFF-----------------------
  5771. INT 14 - Connection Manager - PREPARE FOR INBOUND CONNECTION
  5772.     AH = 0Bh
  5773.     DX = FFFFh
  5774.     AL = service name
  5775.         00h use parameter file or default
  5776.         01h use specified name
  5777.         ES:DI -> 16-byte blank-padded name
  5778.     BH = connection notification
  5779.         00h program awaiting connection, don't notify user
  5780.         01h notify user on connecting
  5781.     BL = connection type
  5782.         00h connection will use Connection Manager API
  5783. Return: AH = return code (00h-02h) (see #00303 at AH=00h/DX=FFFFh)
  5784.     AL = connection ID if AH=00h
  5785. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  5786.       serial ports over an IPX or NetBIOS-based network
  5787. SeeAlso: AH=04h/DX=FFFFh,AH=0Ch/DX=FFFFh,AH=10h/DX=FFFFh
  5788. --------S-140C-------------------------------
  5789. INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
  5790.     AH = 0Ch
  5791.     DX = port number
  5792. Return: AX = FFFFh character not available
  5793.     AX = 00xxh character xx available
  5794. SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL"
  5795. --------S-140C-------------------------------
  5796. INT 14 - MBBIOS PACCOM support - BUFFER MANAGEMENT
  5797.     AH = 0Ch
  5798.     ES = segment of buffer to free, or 0000h to allocate new buffer
  5799. Return: ES = segment of allocated buffer (if ES=0000h on entry)
  5800. Note:    the PACCOM version of MBBIOS uses only ES as buffer address for
  5801.       AH=0Ah and AH=0Bh
  5802. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  5803. --------N-140C--DXFFFF-----------------------
  5804. INT 14 - Connection Manager - TEST FOR INBOUND CONNECTION REQUEST
  5805.     AH = 0Ch
  5806.     DX = FFFFh
  5807.     AL = connection ID from AH=0Bh/DX=FFFFh
  5808. Return: AH = return code (00h-03h) (see also #00303 at AH=00h/DX=FFFFh)
  5809.         03h not prepared for inbound connection
  5810.     AL = connection ID (if AH=00h) or correct connection ID (if AH=02h)
  5811. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  5812.       serial ports over an IPX or NetBIOS-based network
  5813. SeeAlso: AH=03h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  5814. --------S-140D-------------------------------
  5815. INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
  5816.     AH = 0Dh
  5817. Return: AX = result
  5818.         FFFFh character not available
  5819.         xxyyh standard IBM-style scan code
  5820. SeeAlso: AH=0Eh
  5821. --------S-140D-------------------------------
  5822. INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
  5823.     AH = 0Dh
  5824.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5825. Return: ES:BX -> CH_KEY_RDY flag (see #00339)
  5826. SeeAlso: AH=0Ah"Digiboard"
  5827.  
  5828. (Table 00339)
  5829. Values for Digiboard CH_KEY_RDY flag:
  5830.  00h    receive buffer empty
  5831.  FFh    characters available
  5832. --------S-140D-------------------------------
  5833. INT 14 - MBBIOS PACCOM support - SET TXD
  5834.     AH = 0Dh
  5835.     AL = new setting (FFh = 1.0)
  5836. Return: nothing
  5837. Desc:    specify the time from RTS to start or packet
  5838. SeeAlso: AX=0D00h,AH=0Eh"MBBIOS",AH=0Fh"MBBIOS"
  5839. --------N-140D--DXFFFF-----------------------
  5840. INT 14 - Connection Manager - TERMINATE CONNECTION CLIENT ACTIVITY
  5841.     AH = 0Dh
  5842.     DX = FFFFh
  5843. Return: AH = return code
  5844.         00h successful
  5845.         nonzero operation not terminated
  5846. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  5847.       serial ports over an IPX or NetBIOS-based network
  5848. Desc:    end all Connection Client TSR activity to allow it to be removed from
  5849.       memory
  5850. SeeAlso: AH=05h/DX=FFFFh,AH=6Fh/BX=FFFFh
  5851. --------S-140D00-----------------------------
  5852. INT 14 - MBBIOS - GET AVAILABLE BYTES
  5853.     AX = 0D00h
  5854. Return: AX = bytes in transmit buffer
  5855.     CX = bytes in receive buffer
  5856. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  5857. --------S-140D01-----------------------------
  5858. INT 14 - MBBIOS - LOWER ALL MODEM CONTROL SIGNALS
  5859.     AX = 0D01h
  5860. Return: nothing
  5861. Note:    this function lowers DTR, RTS, etc.
  5862. SeeAlso: AX=0D02h
  5863. --------S-140D02-----------------------------
  5864. INT 14 - MBBIOS - RAISE ALL MODEM CONTROL SIGNALS
  5865.     AX = 0D02h
  5866. Return: nothing
  5867. Note:    this function raises DTR, RTS, etc.
  5868. SeeAlso: AX=0D01h
  5869. --------S-140D03-----------------------------
  5870. INT 14 - MBBIOS - SET HANDSHAKE BYTE
  5871.     AX = 0D03h
  5872.     CL = new handshake byte
  5873. Return: CL = previous handshake byte
  5874. Note:    this function lowers DTR, RTS, etc.
  5875. --------S-140E-------------------------------
  5876. INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
  5877.     AH = 0Eh
  5878. Return: AX = xxyyh standard IBM-style scan code
  5879. SeeAlso: AH=0Dh"FOSSIL"
  5880. --------S-140E-------------------------------
  5881. INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
  5882.     AH = 0Eh
  5883.     CX = number of characters to write
  5884.     ES:BX -> string
  5885.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5886. Return: AX = number of characters actually written
  5887.     ZF clear if successful
  5888.     ZF set on error
  5889. SeeAlso: AH=0Fh"Digiboard"
  5890. --------S-140E-------------------------------
  5891. INT 14 - MBBIOS PACCOM support - SET PERSISTENCE
  5892.     AH = 0Eh
  5893.     AL = new setting (FFh = 1.0)
  5894. Return: nothing
  5895. Desc:    specify the time from end of DCD to RTS
  5896. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  5897. --------N-140E--DXFFFF-----------------------
  5898. INT 14 - Connection Manager - SET HARDWARE FLOW STATE
  5899.     AH = 0Eh
  5900.     DX = FFFFh
  5901.     AL = connection ID from AH=04h/DX=FFFFh
  5902.     BL = RTS state (00h off, 01h on)
  5903. Return: AH = return code (00h-03h) (see also #00303 at AH=00h/DX=FFFFh)
  5904.         03h invalid request (BL not 00h or 01h)
  5905. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  5906.       serial ports over an IPX or NetBIOS-based network
  5907. SeeAlso: AH=03h/DX=FFFFh,AH=0Ah/DX=FFFFh
  5908. --------S-140F-------------------------------
  5909. INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
  5910.     AH = 0Fh
  5911.     AL = bit mask describing requested flow control (see #00340)
  5912.     DX = port number
  5913. Return: nothing
  5914. SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL"
  5915.  
  5916. Bitfields for FOSSIL requested flow control:
  5917. Bit(s)    Description    (Table 00340)
  5918.  0    XON/XOFF on transmit (watch for XOFF while sending)
  5919.  1    CTS/RTS (CTS on transmit/RTS on receive)
  5920.  2    reserved
  5921.  3    XON/XOFF on receive (send XOFF when buffer near full)
  5922.  4-7    all 1
  5923. --------S-140F-------------------------------
  5924. INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
  5925.     AH = 0Fh
  5926.     CX = number of characters to read
  5927.     ES:BX -> buffer
  5928.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5929. Return: AX = number of characters read
  5930.     ZF clear if successful
  5931.     ZF set on error (line status or wrong number of characters)
  5932. SeeAlso: AH=0Eh"Digiboard"
  5933. --------S-140F-------------------------------
  5934. INT 14 - MBBIOS PACCOM support - SET SLOT TIME
  5935.     AH = 0Fh
  5936.     AL = new setting in clock ticks
  5937. Return: nothing
  5938. Desc:    specify the time from end of DCD to RTS
  5939. SeeAlso: AH=0Dh"MBBIOS",AH=0Eh"MBBIOS",AH=10h"MBBIOS"
  5940. --------N-140F--DXFFFF-----------------------
  5941. INT 14 - Connection Manager - RETURN ACTIVE CONNECTION PARAMETERS
  5942.     AH = 0Fh
  5943.     DX = FFFFh
  5944.     AL = connection ID
  5945.     CX = size of buffer or 0000h to get length of returned vector
  5946.     ES:DI -> buffer for connection parameter vector (see #00311)
  5947. Return: AH = return code (00h-02h,06h) (see #00303 at AH=00h/DX=FFFFh)
  5948.     CX = number of bytes which could not be returned because the given
  5949.           buffer was too small
  5950. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  5951.       serial ports over an IPX or NetBIOS-based network
  5952. SeeAlso: AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  5953. --------S-1410-------------------------------
  5954. INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
  5955.     AH = 10h
  5956.     AL = bit mask
  5957.         bit 0: enable/disable ^C/^K checking
  5958.         bit 1: enable/disable the transmitter
  5959.     DX = port number
  5960. Return: nothing
  5961. SeeAlso: AH=0Fh"FOSSIL"
  5962. --------S-1410-------------------------------
  5963. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
  5964.     AH = 10h
  5965.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5966. Return: AH = status
  5967.         00h successful
  5968.         FFh error
  5969. SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
  5970. --------S-1410-------------------------------
  5971. INT 14 - MBBIOS PACCOM support - SET CRC WAIT
  5972.     AH = 10h
  5973.     AL = new setting in clock ticks (should be at least 5 character times)
  5974. Return: nothing
  5975. Desc:    specify the time from start of last character to dropping RTS
  5976. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  5977. --------N-1410--DXFFFF-----------------------
  5978. INT 14 - Connection Manager - QUERY SERVICE NAMES
  5979.     AH = 10h
  5980.     DX = FFFFh
  5981.     CL = subfunction
  5982.         00h search first
  5983.         01h search next
  5984.     ES:DI -> pattern buffer (see #00341)
  5985. Return: AH = return code (00h,01h,03h,06h) (see also #00303 at AH=00h/DX=FFFFh)
  5986.         01h no (more) matching names
  5987.         03h invalid request
  5988.     ES:DI buffer filled with reply buffer (see #00341) containing matched
  5989.           name if AH=00h
  5990. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  5991.       serial ports over an IPX or NetBIOS-based network
  5992. Desc:    obtain the names of groups and lines available for connection requests,
  5993.       and the names of active Connection Servers
  5994. SeeAlso: AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  5995.  
  5996. Format of Connection Manager pattern/reply buffer:
  5997. Offset    Size    Description    (Table 00341)
  5998.  00h    WORD    length of pattern (30h or 32h)
  5999.  02h 16 BYTEs    server pattern or name
  6000.  12h 16 BYTEs    group pattern or name
  6001.  22h 16 BYTEs    line pattern or name
  6002.  23h    BYTE    (optional) ???
  6003.  24h    BYTE    (optional, returned) current line status
  6004.         00h available
  6005.         01h out of service
  6006.         02h currently allocated to a connection
  6007. Note:    pattern may include '?' wildcard to match any character
  6008. --------S-1411-------------------------------
  6009. INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
  6010.     AH = 11h
  6011.     DH = row
  6012.     DL = column
  6013. Return: nothing
  6014. Note:    this is the same as INT 10/AH=02h
  6015. SeeAlso: AH=12h"FOSSIL"
  6016. --------S-1411-------------------------------
  6017. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
  6018.     AH = 11h
  6019.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6020. Return: AH = status
  6021.         00h successful
  6022.         FFh error
  6023. SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
  6024. --------S-1411-------------------------------
  6025. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DISABLE PORT
  6026.     AH = 11h
  6027.     DX = port number
  6028. Return: AL = status
  6029.         00h successful
  6030.         01h IRQ for port is shared
  6031.         02h IRQ was reserved
  6032. SeeAlso: AH=04h"SERIAL",AH=05h"SERIAL",AH=12h"PC-MOS"
  6033. --------S-1412-------------------------------
  6034. INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
  6035.     AH = 12h
  6036. Return: DH = row
  6037.     DL = column
  6038. Note:    this is the same as INT 10/AH=03h
  6039. SeeAlso: AH=11h"FOSSIL"
  6040. --------S-1412-------------------------------
  6041. INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
  6042.     AH = 12h
  6043.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6044. Return: AX = number of bytes free
  6045. SeeAlso: AH=0Ah"Digiboard",AH=14h"Digiboard"
  6046. --------S-1412-------------------------------
  6047. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET CURRENT PORT PARAMETERS
  6048.     AH = 12h
  6049.     DX = port number
  6050. Return: AH = status
  6051.         FFh port number invalid
  6052.     AL = line parameters (see #00304)
  6053.     AH = flow control configuration (see #00336 at AH=05h"PC-MOS")
  6054.     CX:BX = bps rate
  6055.     DL = XOFF character or 00h for none
  6056.     DH = XON character or 00h for none
  6057. --------S-1413-------------------------------
  6058. INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
  6059.     AH = 13h
  6060.     AL = character
  6061. Return: nothing
  6062. Note:    should not be called if it is unsafe to call DOS
  6063. SeeAlso: AH=15h
  6064. --------S-1413-------------------------------
  6065. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - REGISTER A PORT WITH A TERMINAL
  6066.     AH = 13h
  6067.     DX = port number
  6068. Return: AH = status
  6069.         FFh port number invalid
  6070.         else
  6071.         ES:BX -> BYTE flag (00h buffer empty, FFh buffer contains data)
  6072. SeeAlso: AH=17h"PC-MOS"
  6073. --------S-1414-------------------------------
  6074. INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
  6075.     AH = 14h
  6076.     AL = 01h enable watchdog
  6077.          00h disable watchdog
  6078.     DX = port number
  6079. Return: nothing
  6080. SeeAlso: INT 21/AH=2Bh/CX=6269h"WDTSR"
  6081. --------S-1414-------------------------------
  6082. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT STRING
  6083.     AH = 14h
  6084.     CX = number of characters in string
  6085.     DX = port number
  6086.     ES:BX -> string to be sent
  6087.     SI = timeout in timer ticks or 0000h for default
  6088. Return: AX = number of bytes actually sent
  6089.     ZF clear if successful
  6090.     ZF set on timeout
  6091. SeeAlso: AH=01h,AH=15h"PC-MOS"
  6092. --------S-1414-------------------------------
  6093. INT 14 - Digiboard - GET NUMBER OF BOARDS INSTALLED
  6094.     AH = 14h
  6095. Return: AX = number of boards installed
  6096. SeeAlso: AH=08h"Digiboard",AH=15h"Digiboard"
  6097. --------S-1415-------------------------------
  6098. INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
  6099.     AH = 15h
  6100.     AL = character
  6101. Return: nothing
  6102. SeeAlso: AH=13h"FOSSIL"
  6103. --------S-1415-------------------------------
  6104. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STRING
  6105.     AH = 15h
  6106.     CX = size of buffer
  6107.     DX = port number
  6108.     ES:BX -> buffer for received characters
  6109.     SI = timeout in clock ticks or 0000h for default
  6110. Return: AX = number of characters actually read
  6111.     ZF set on timeout (no data available)
  6112. SeeAlso: AH=02h,AH=14h"PC-MOS",AH=16h"PC-MOS"
  6113. --------S-1415-------------------------------
  6114. INT 14 - Digiboard - ENABLE/DISABLE MEMORY
  6115.     AH = 15h
  6116.     AL = new state (00h disabled, 01h enabled)
  6117. Return: AH = status
  6118.         00h successful
  6119.         80h error
  6120.         FFh error
  6121. SeeAlso: AH=14h"Digiboard",AH=16h"Digiboard"
  6122. --------S-1416-------------------------------
  6123. INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
  6124.     AH = 16h
  6125.     AL = function
  6126.         00h = delete
  6127.         01h = add
  6128.     ES:DX -> routine to call
  6129. Return: AX = status
  6130.         0000h successful
  6131.         0001h unsuccessful
  6132. SeeAlso: AH=07h"FOSSIL"
  6133. --------S-1416-------------------------------
  6134. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - LINK TO ANOTHER SERIAL DRIVER
  6135.     AH = 16h
  6136.     ES:BX -> calling driver's INT 14 entry point
  6137. Return: nothing
  6138. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  6139.       operating system by The Software Link, Inc.
  6140. --------S-1416-------------------------------
  6141. INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
  6142.     AH = 16h
  6143.     AL = CCB command number (see #00342) (see also following entries)
  6144.     BL = byte 2
  6145.     BH = byte 3
  6146.     CL = byte 1 (for all channel functions except 4Eh and 4Fh)
  6147.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6148. Return: AH = status
  6149.         00h successful
  6150.         80h error
  6151.         FFh error
  6152. SeeAlso: AX=1646h,AH=18h"Digiboard"
  6153.  
  6154. (Table 00342)
  6155. Values for Digiboard CCB command number:
  6156.  40h    Set Receive Mid Water Mark
  6157.  41h    Set Receive High Water Mark
  6158.  42h    Flush Receive Buffer
  6159.  43h    Flush Transmit Buffer
  6160.  44h    Transmit Pause
  6161.  45h    Transmit Resume
  6162.  46h    Set Interrupt to Host Mask
  6163.  47h    Set Baud, Data, Stop and Parity
  6164.  48h    Send Break
  6165.  49h    Set Modem Lines
  6166.  4Ah    Set Break Count
  6167.  4Bh    Set Handshake
  6168.  4Ch    Set Xon/Xoff Characters
  6169.  4Dh    Set Transmit Mid Water Mark
  6170.  4Eh    IRQ Polling Timer to Host
  6171.  4Fh    Buffer Set All
  6172.  50h    Port On
  6173.  51h    Port Off
  6174.  52h    Receive Pause
  6175.  53h    Special Character Interrupt
  6176.  54h    RS-422 Enable
  6177. --------S-141646-----------------------------
  6178. INT 14 - Digiboard - CCB COMMAND - SET INTERRUPT TO HOST MASK
  6179.     AX = 1646h
  6180.     BL = bits to set
  6181.     BH = bits to clear
  6182.     CL = byte 1
  6183.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6184. Return: AH = status
  6185.         00h successful
  6186.         80h error
  6187.         FFh error
  6188. SeeAlso: AH=16h"Digiboard",AX=1647h
  6189. --------S-141647-----------------------------
  6190. INT 14 - Digiboard - CCB COMMAND - SET BAUD/DATABITS/STOPBITS/PARITY
  6191.     AX = 1647h
  6192.     BL = baud
  6193.     BH = datatype
  6194.     CL = byte 1
  6195.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6196. Return: AH = status
  6197.         00h successful
  6198.         80h error
  6199.         FFh error
  6200. SeeAlso: AH=16h"Digiboard",AX=1646h,AX=1649h
  6201. --------S-141649-----------------------------
  6202. INT 14 - Digiboard - CCB COMMAND - SET MODEM LINES
  6203.     AX = 1649h
  6204.     BL = bits to set
  6205.     BH = bits to clear
  6206.     CL = byte 1
  6207.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6208. Return: AH = status
  6209.         00h successful
  6210.         80h error
  6211.         FFh error
  6212. SeeAlso: AH=16h"Digiboard",AX=1647h
  6213. --------S-14164A-----------------------------
  6214. INT 14 - Digiboard - CCB COMMAND - SET BREAK COUNT
  6215.     AX = 164Ah
  6216.     BL = break count
  6217.     CL = byte 1
  6218.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6219. Return: AH = status
  6220.         00h successful
  6221.         80h error
  6222.         FFh error
  6223. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Bh
  6224. --------S-14164B-----------------------------
  6225. INT 14 - Digiboard - CCB COMMAND - SET HANDSHAKE
  6226.     AX = 164Bh
  6227.     BL = bits to set
  6228.     BH = bits to clear
  6229.     CL = byte 1
  6230.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6231. Return: AH = status
  6232.         00h successful
  6233.         80h error
  6234.         FFh error
  6235. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Ch
  6236. --------S-14164C-----------------------------
  6237. INT 14 - Digiboard - CCB COMMAND - SET XON/XOFF CHARACTERS
  6238.     AX = 164Ch
  6239.     BL = XON character
  6240.     BH = XOFF character
  6241.     CL = byte 1
  6242.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6243. Return: AH = status
  6244.         00h successful
  6245.         80h error
  6246.         FFh error
  6247. SeeAlso: AH=16h"Digiboard",AX=164Bh,AX=164Dh
  6248. --------S-14164D-----------------------------
  6249. INT 14 - Digiboard - CCB COMMAND - SET TRANSMIT MID-WATER MARK
  6250.     AX = 164Dh
  6251.     BX = new mid-water mark
  6252.     CL = byte 1
  6253.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6254. Return: AH = status
  6255.         00h successful
  6256.         80h error
  6257.         FFh error
  6258. SeeAlso: AH=16h"Digiboard",AX=164Ch,AX=164Eh,AX=164Fh
  6259. --------S-14164E-----------------------------
  6260. INT 14 - Digiboard - CCB COMMAND - IRQ POLLING TIMER TO HOST
  6261.     AX = 164Eh
  6262.     BL = ticks
  6263.     BH = ???
  6264.     CL = mode
  6265.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6266. Return: AH = status
  6267.         00h successful
  6268.         80h error
  6269.         FFh error
  6270. SeeAlso: AH=16h"Digiboard",AX=164Dh
  6271. --------S-14164F-----------------------------
  6272. INT 14 - Digiboard - CCB COMMAND - BUFFER SET ALL
  6273.     AX = 164Fh
  6274.     BL = size
  6275.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6276. Return: AH = status
  6277.         00h successful
  6278.         80h error
  6279.         FFh error
  6280. SeeAlso: AH=16h"Digiboard",AX=164Dh
  6281. --------S-141653-----------------------------
  6282. INT 14 - Digiboard - CCB COMMAND - SPECIAL CHARACTER INTERRUPT
  6283.     AX = 1653h
  6284.     BL = enable/disable
  6285.     BH = special character
  6286.     CL = byte 1
  6287.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6288. Return: AH = status
  6289.         00h successful
  6290.         80h error
  6291.         FFh error
  6292. SeeAlso: AH=16h"Digiboard",AX=1646h
  6293. --------S-1417-------------------------------
  6294. INT 14 - FOSSIL - REBOOT SYSTEM
  6295.     AH = 17h
  6296.     AL = method
  6297.         00h = cold boot
  6298.         01h = warm boot
  6299. SeeAlso: INT 16/AX=E0FFh,INT 19,INT 60/DI=0606h
  6300. --------S-1417-------------------------------
  6301. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - WRITE MODEM CONTROL REGISTER
  6302.     AH = 17h
  6303.     AL = new value for UART's modem control register
  6304.     DX = port number
  6305. Return: nothing
  6306. --------S-1418-------------------------------
  6307. INT 14 - FOSSIL - READ BLOCK
  6308.     AH = 18h
  6309.     CX = maximum number of characters to transfer
  6310.     DX = port number
  6311.     ES:DI -> user buffer
  6312. Return: AX = number of characters transferred
  6313. SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
  6314. --------S-1418-------------------------------
  6315. INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
  6316.     AH = 18h
  6317.     ES:BX -> 16-byte command string
  6318.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6319. Return: AH = status
  6320.         00h successful
  6321.         80h timeout
  6322.     AL = mailbox status
  6323.         00h no errors
  6324.         8Xh BIOS error
  6325.     ES:BX buffer filled in with mailbox string
  6326.     ZF clear if no errors
  6327.     ZF set if either status byte contains an error code
  6328. SeeAlso: AH=16h"Digiboard"
  6329. --------S-1418-------------------------------
  6330. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET DRIVER DESCRIPTION
  6331.     AH = 18h
  6332.     DX = port number
  6333. Return: DS:BX -> 40-byte buffer containing a string identifying the serial
  6334.         driver
  6335. SeeAlso: AH=06h"PC-MOS"
  6336. --------S-1419-------------------------------
  6337. INT 14 - FOSSIL - WRITE BLOCK
  6338.     AH = 19h
  6339.     CX = maximum number of characters to transfer
  6340.     DX = port number
  6341.     ES:DI -> user buffer
  6342. Return: AX = number of characters transferred
  6343. SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
  6344. --------S-1419-------------------------------
  6345. INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
  6346.     AH = 19h
  6347.     BL = flag
  6348.         00h disable special character interrupt
  6349.         FFh enable interrupt
  6350.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6351. Return: AH = status
  6352.         00h successful
  6353.         FFh failed
  6354. SeeAlso: AH=1Ah"Digiboard"
  6355. --------S-1419-------------------------------
  6356. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SELECTIVE BUFFER FLUSH
  6357.     AH = 19h
  6358.     AL = what to flush
  6359.         bit 0: input buffer
  6360.         bit 1: output buffer
  6361.     DX = port number
  6362. Return: nothing
  6363. SeeAlso: AH=09h"PC-MOS"
  6364. --------S-141A-------------------------------
  6365. INT 14 - FOSSIL - BREAK BEGIN OR END
  6366.     AH = 1Ah
  6367.     AL = 00h stop sending 'break'
  6368.          01h start sending 'break'
  6369.     DX = port number
  6370. Return: nothing
  6371. SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
  6372. --------S-141A-------------------------------
  6373. INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
  6374.     AH = 1Ah
  6375.     BX = subfunction
  6376.         00h return pointer to special character flag byte
  6377.         01h return pointer to special character counter word
  6378.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6379. Return: ES:BX -> special character flag or counter
  6380. Notes:    flag is FFh if one or more special characters are in the receive
  6381.       buffer; it is 00h and the counter is invalid if no special characters
  6382.       are in the receive buffer
  6383.     counter (if valid) contains the number of characters in the receive
  6384.       buffer up to and including the last-received special character
  6385. --------S-141B-------------------------------
  6386. INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
  6387.     AH = 1Bh
  6388.     DX = port number
  6389.     CX = size of user buffer
  6390.     ES:DI -> user buffer for driver info (see #00343)
  6391. Return: AX = number of characters transferred
  6392.     CX = 3058h ("0X") (X00 FOSSIL only)
  6393.     DX = 2030h (" 0") (X00 FOSSIL only)
  6394.  
  6395. Format of FOSSIL driver info:
  6396. Offset    Size    Description    (Table 00343)
  6397.  00h    WORD    size of structure in bytes
  6398.  02h    BYTE    FOSSIL spec driver conforms to
  6399.  03h    BYTE    revision level of this specific driver
  6400.  04h    DWORD    pointer to ASCIZ identification string
  6401.  08h    WORD    size of the input buffer
  6402.  0Ah    WORD    number of bytes left in buffer
  6403.  0Ch    WORD    size of the output buffer
  6404.  0Eh    WORD    number of bytes left in buffer
  6405.  10h    BYTE    width of screen
  6406.  11h    BYTE    length of screen
  6407.  12h    BYTE    actual baud rate, computer to modem
  6408. --------S-141C-------------------------------
  6409. INT 14 - X00 FOSSIL - ACTIVATE PORT
  6410.     AH = 1Ch
  6411.     DX = port number
  6412. Return: AX = 1954h if successful
  6413.     BL = maximum function number supported (not including 7Eh and above)
  6414.     BH = revision of FOSSIL specification supported
  6415. Note:    this is a duplicate of AH=04h, so that AH=04h may be made compatible
  6416.       with the PS/2 BIOS in a future release
  6417. SeeAlso: AH=04h"FOSSIL",AH=1Dh
  6418. --------S-141D-------------------------------
  6419. INT 14 - X00 FOSSIL - DEACTIVATE PORT
  6420.     AH = 1Dh
  6421.     DX = port number
  6422. Return: none
  6423. Notes:    this is a duplicate of AH=05h, so that AH=05h may be made compatible
  6424.       with the PS/2 BIOS in a future release
  6425.     ignored if the port was never activated with AH=04h or AH=1Ch
  6426. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  6427. --------S-141E-------------------------------
  6428. INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
  6429.     AH = 1Eh
  6430.     AL = break status
  6431.         00h if break
  6432.         01h if no break
  6433.     BH = parity (see #00344)
  6434.     BL = number of stop bits
  6435.         00h one stop bit
  6436.         01h two stop bits (1.5 if 5 bit word length)
  6437.     CH = word length (see #00345)
  6438.     CL = bps rate (see #00346)
  6439.     DX = port number
  6440. Return: AX = port status code (see #00304,#00305)
  6441. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=04h call
  6442.     if the port was locked at X00 load time, the appropriate parameters are
  6443.       ignored
  6444. SeeAlso: AH=00h,AH=04h"SERIAL"
  6445.  
  6446. (Table 00344)
  6447. Values for X00 FOSSIL parity:
  6448.  00h    no parity
  6449.  01h    odd parity
  6450.  02h    even parity
  6451.  03h    stick parity odd
  6452.  04h    stick parity even
  6453. SeeAlso: #00307,#00345,#00346
  6454.  
  6455. (Table 00345)
  6456. Values for X00 FOSSIL word length:
  6457.  00h    5 bits
  6458.  01h    6 bits
  6459.  02h    7 bits
  6460.  03h    8 bits
  6461. SeeAlso: #00308,#00344,#00346
  6462.  
  6463. (Table 00346)
  6464. Values for X00 FOSSIL bps rate:
  6465.  00h    110
  6466.  01h    150
  6467.  02h    300
  6468.  03h    600
  6469.  04h    1200
  6470.  05h    2400
  6471.  06h    4800
  6472.  07h    9600
  6473.  08h    19200
  6474. SeeAlso: #00309,#00344,#00345
  6475. --------S-141E------------------------------------
  6476. INT 14 - HUNTER 16 - READ COMMS PARAMETERS
  6477.     AH = 1Eh
  6478.     CX = channel number (00h COM1, 01h COM2, ...)
  6479.     DS:BX -> buffer for communications parameters (see #00347)
  6480. Return: DS:BX buffer filled
  6481. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  6482.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  6483. SeeAlso: AH=20h"HUNTER"
  6484.  
  6485. Format of HUNTER 16 communications parameters:
  6486. Offset    Size    Description    (Table 00347)
  6487.  00h    BYTE    communications type (00h IBM, nonzero Husky)
  6488.  01h    BYTE    port number (00h COM1, 01h COM2)
  6489.  02h    BYTE    baud rate (00h 110 bps, 01h 150, 02h 300, 03h 600, 04h 1200,
  6490.           05h 2400, 06h 4800, 07h 9600, 08h 19200, 09h 38400)
  6491.  03h    BYTE    data bits (01h seven, 02h eight)
  6492.  04h    BYTE    parity (00h none, 01h odd, 02h even)
  6493.  05h    BYTE    stop bits (00h one, 01h two)
  6494.  06h    BYTE    handshake (see #00348)
  6495.  07h    BYTE    handshake protocol (00h none, 01h Xon/Xoff, 02h HWK3780)
  6496.  08h    BYTE    Nulls after CR (0-20)
  6497.  09h    BYTE    LF (00h off, 01h on)
  6498.  0Ah    BYTE    Serig. 0..7Fh: Ignore this character
  6499.                80h: Serig off
  6500.  0Bh    BYTE    echo (00h off, 01h on)
  6501.  0Ch    BYTE    transmit timeout in seconds (1-60) or 00h to disable
  6502.  0Dh    BYTE    receive timeout in seconds (1-60) or 00h to disable
  6503.  0Eh  5 BYTEs    reserved
  6504.  
  6505. Bitfields for HUNTER 16 handshake:
  6506. Bit(s)    Description    (Table 00348)
  6507.  0-1    0: RTS off, 1: RTS hold, 2: RTS true
  6508.  2    DTR enabled
  6509.  4    CTS enabled
  6510.  5    DSR enabled
  6511.  6    DCD enabled
  6512. --------S-141F-------------------------------
  6513. INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
  6514.     AH = 1Fh
  6515.     DX = port number
  6516.     AL = direction
  6517.         00h read modem control register
  6518.         Return: BL = modem control register (see #00349)
  6519.             AH = status
  6520.         01h write modem control register
  6521.         BL = modem control register (see #00349)
  6522.         Return: AX = status
  6523. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=05h call
  6524.     X00 forces BL bit 3 set (interrupts cannot be disabled)
  6525. SeeAlso: AH=00h,AH=05h"SERIAL"
  6526.  
  6527. Bitfields for X00 FOSSIL modem control register:
  6528. Bit(s)    Description    (Table 00349)
  6529.  0    data terminal ready
  6530.  1    request to send
  6531.  2    OUT1
  6532.  3    OUT2 (interrupts) enabled
  6533.  4    LOOP
  6534.  5-7    reserved
  6535. --------S-1420-------------------------------
  6536. INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
  6537.     AH = 20h
  6538.     DX = port number
  6539. Return: AH = 00h if character was available
  6540.         AL = next character (removed from receive buffer)
  6541.     AX = FFFFh if no character available
  6542. SeeAlso: AH=0Ch,AH=21h"X00"
  6543. --------S-1420-------------------------------
  6544. INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
  6545.     AH = 20h
  6546.     AL = logical port (01h COM1, 02h COM2)
  6547.     DX = physical port number
  6548. Return: AX = status
  6549.         0000h successful
  6550.         FFFFh failed
  6551. SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
  6552. --------S-1420-------------------------------
  6553. INT 14 - MultiDOS Plus - INITIALIZE PORT
  6554.     AH = 20h
  6555.     AL = port parameters (see #00300 at AH=00h"SERIAL")
  6556.     DX = port number (0-3)
  6557. Return: AH = status
  6558.         00h successful
  6559.         41h no such port
  6560.         64h monitor mode already active
  6561. SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
  6562. --------S-1420-------------------------------
  6563. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHECK OUTPUT QUEUE
  6564.     AH = 20h
  6565.     DX = port number
  6566. Return: AX = number of bytes in output buffer
  6567. SeeAlso: AH=0Ah"Digiboard"
  6568. --------S-1420------------------------------------
  6569. INT 14 - HUNTER 16 - SELECT COMMS PARAMETERS
  6570.     AH = 20h
  6571.     CX = channel number (00h COM1, 01h COM2, ...)
  6572.     DS:BX -> buffer with communications parameter (see #00347)
  6573. Return: AX = status
  6574.         0000h successful
  6575.         0001h invalid parameter
  6576. SeeAlso: AH=1Eh"HUNTER",AH=21h"HUNTER"
  6577. --------S-1421-------------------------------
  6578. INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
  6579.     AH = 21h
  6580.     AL = character
  6581.     DX = port number
  6582. Return: nothing
  6583. Notes:    the given character is inserted at the end of the receive buffer as if
  6584.       it had just arrived from the serial port; all normal receive
  6585.       processing (XON/XOFF, ^C/^K) is performed on the character
  6586.     fully re-entrant
  6587. SeeAlso: AH=20h"X00"
  6588. --------S-1421-------------------------------
  6589. INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
  6590.     AH = 21h
  6591.     DX = physical port number
  6592. Return: AX = status
  6593.         0000h successful
  6594.         FFFFh failed
  6595. SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
  6596. --------S-1421-------------------------------
  6597. INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
  6598.     AH = 21h
  6599.     AL = character to send
  6600.     DX = port number
  6601. Return: AH = status (see #00350)
  6602. Note:    monitor mode must have been turned on with AH=24h before calling
  6603. SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
  6604.  
  6605. (Table 00350)
  6606. Values for MultiDOS Plus status:
  6607.  00h    successful
  6608.  39h    no DSR or CTS
  6609.  3Ch    no DSR
  6610.  3Bh    no CTS
  6611.  41h    no such port
  6612.  42h    monitor mode not active
  6613.  97h    timed out
  6614. --------S-1421-------------------------------
  6615. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT CHARACTER, WITH TIMEOUT
  6616.     AH = 21h
  6617.     AL = char to send
  6618.     DX = port number
  6619.     SI = timeout in timer ticks (0000h = default)
  6620. Return: after character is sent or timeout expires
  6621. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  6622.       operating system by The Software Link, Inc.
  6623. SeeAlso: AH=01h,AH=0Eh"Digiboard",AH=22h"PC-MOS"
  6624. --------S-1421------------------------------------
  6625. INT 14 - HUNTER 16 - EXTENDED CONTROL
  6626.     AH = 21h
  6627.     AL = command
  6628.         01h force transmission of buffer
  6629.         02h clear transmit buffer
  6630.         03h clear receive buffer
  6631.     DX = port (00h COM1, 01h COM2)
  6632. Return: AH = extended status
  6633. Desc:    executes the command on the selected port
  6634. SeeAlso: AH=1Eh"HUNTER",AH=20h"HUNTER",AH=22h"HUNTER",AH=24h"HUNTER"
  6635. --------S-1422-------------------------------
  6636. INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
  6637.     AH = 22h
  6638.     AL = logical port (01h COM1, 02h COM2)
  6639. Return: AX = status (0000h successful)
  6640. SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
  6641. --------S-1422-------------------------------
  6642. INT 14 - MultiDOS Plus - RECEIVE CHARACTER
  6643.     AH = 22h
  6644.     DX = port number
  6645. Return: AH = status (see also AH=21h"MultiDOS")
  6646.         00h successful
  6647.         AL = character
  6648.         3Dh framing and parity error
  6649.         3Eh overrun error
  6650.         3Fh framing error
  6651.         40h parity error
  6652.         96h ring buffer overflow
  6653. Note:    if no character is available, this function waits until a character
  6654.       arrives or an implementation-dependent timeout elapses
  6655. SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
  6656. --------S-1422-------------------------------
  6657. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RECEIVE CHARACTER, WITH TIMEOUT
  6658.     AH = 22h
  6659.     DX = port number
  6660.     SI = timeout in timer ticks (0000h = default)
  6661. Return: AH = port status (see also #00304 at AH=03h)
  6662.         bit 7 = 1 indicates time-out
  6663.     AL = character received
  6664. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  6665.       operating system by The Software Link, Inc.
  6666. SeeAlso: AH=02h,AH=0Fh"Digiboard",AH=21h"PC-MOS"
  6667. --------S-1422------------------------------------
  6668. INT 14 - HUNTER 16 - EXTENDED STATUS
  6669.     AH = 22h
  6670.     DX = port (00h COM1, 01h COM2)
  6671. Return: AH = extended status
  6672.     BX = number of characters in input buffer
  6673.     CX = number of characters in output buffer
  6674. Desc:    returns the most recent Extended Status code for the port
  6675. SeeAlso: AH=21h"HUNTER"
  6676. --------S-1423-------------------------------
  6677. INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
  6678.     AH = 23h
  6679.     AL = logical port (01h COM1, 02h COM2)
  6680.     DH = user ID
  6681.     DL = process ID (DH,DL both FFh for current task)
  6682. Return: AL = MW386 port mode (see #00351)
  6683.     CX = MW386 port number
  6684.     DH = owner's user ID
  6685.     DL = owner's task ID
  6686. SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
  6687.  
  6688. Bitfields for MW386 port mode:
  6689. Bit(s)    Description    (Table 00351)
  6690.  0    port is shared (spooler only)
  6691.  1    port is spooled instead of direct (spooler only)
  6692.  2    port is assigned as logical COM device, not in spooler
  6693.  3    port is free
  6694. --------S-1423-------------------------------
  6695. INT 14 - MultiDOS Plus - GET PORT STATUS
  6696.     AH = 23h
  6697.     DX = port number
  6698. Return: AH = line status (see #00304 at AH=03h)
  6699.     AL = modem status (see #00305 at AH=03h)
  6700. SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
  6701. --------S-1423-------------------------------
  6702. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DECLARE PORT OWNERSHIP
  6703.     AH = 23h
  6704.     DX = port number
  6705.     BX = TCB segment/selector address of owner task
  6706. Return: nothing
  6707. SeeAlso: AH=0Dh"Digiboard",AH=21h"PC-MOS",AH=22h"PC-MOS"
  6708. --------S-1423------------------------------------
  6709. INT 14 - HUNTER 16 - CONTROL HANDSHAKE LINES
  6710.     AH = 23h
  6711.     BH = handshake line to set (00h RTS, 01h DTR)
  6712.     BL = new level (00h low, 01h high)
  6713. Return: nothing
  6714. Desc:    sets the handshake lines of COM1 to the desired level
  6715. SeeAlso: AH=21h"HUNTER",AH=24h"HUNTER"
  6716. --------S-1424-------------------------------
  6717. INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
  6718.     AH = 24h
  6719.     CX = physical I/O port number
  6720.     DS:DX -> configuration table (see #00352)
  6721. Return: AH = 00h
  6722. Note:    invalid port numbers are merely ignored
  6723. SeeAlso: INT 17/AH=96h
  6724.  
  6725. Format of Alloy MW386 configuration table:
  6726. Offset    Size    Description    (Table 00352)
  6727.  00h    BYTE    baud rate (see #00353)
  6728.  01h    BYTE    data bits (00h=5, 01h=6, 02h=7, 03h=8)
  6729.  02h    BYTE    parity (00h none, 01h odd, 02h even)
  6730.  03h    BYTE    stop bits (00h=1, 01h=2)
  6731.  04h    BYTE    receive flow control
  6732.         00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
  6733.  05h    BYTE    transmit flow control (as for receive)
  6734.  
  6735. (Table 00353)
  6736. Values for Alloy MW386 baud rate:
  6737.  00h    38400
  6738.  01h    19200
  6739.  02h    9600
  6740.  03h    7200
  6741.  04h    4800
  6742.  05h    3600
  6743.  06h    2400
  6744.  07h    2000
  6745.  08h    1200
  6746.  09h    600
  6747.  0Ah    300
  6748.  0Bh    150
  6749.  0Ch    134.5
  6750. SeeAlso: #00309
  6751. --------S-1424-------------------------------
  6752. INT 14 - MultiDOS Plus - SET MONITOR MODE
  6753.     AH = 24h
  6754.     AL = port status storage
  6755.         00h single status for entire receive buffer
  6756.         01h separate status kept for each byte in receive buffer
  6757.     DX = port number
  6758. Return: AH = status
  6759.         00h successful
  6760.         3Ah invalid status storage specified
  6761.         41h no such port
  6762.         64h monitor mode already active
  6763. Note:    in monitor mode, MultiDOS redirects all BIOS video output to a serial
  6764.       port
  6765. SeeAlso: AH=20h"MultiDOS",AH=25h
  6766. --------S-1424-------------------------------
  6767. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - ???
  6768.     AH = 24h
  6769. Return: ???
  6770. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  6771.       operating system by The Software Link, Inc.
  6772. --------S-1424------------------------------------
  6773. INT 14 - HUNTER 16 - CONTROL CTS HANDSHAKING
  6774.     AH = 24h
  6775.     AL = new CTS handshake state for COM1 (00h disabled, 01h enabled)
  6776. Return: nothing
  6777. SeeAlso: AH=23h"HUNTER",AH=25h"HUNTER",AH=26h"HUNTER"
  6778. --------S-1425-------------------------------
  6779. INT 14 - MultiDOS Plus - CLEAR BUFFERS
  6780.     AH = 25h
  6781.     AL = function
  6782.         00h only clear buffers
  6783.         01h clear buffers and deactivate
  6784.     DX = port number
  6785. Return: AH = status
  6786.         00h successful
  6787.         3Ah invalid function
  6788.         41h no such port
  6789.         42h monitor mode not active
  6790. SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
  6791. --------S-1425------------------------------------
  6792. INT 14 - HUNTER 16 - CONTROL RS232 DRIVERS
  6793.     AH = 25h
  6794.     AL = new state of RS232 drivers (00h off, 01h on)
  6795. Return: nothing
  6796. Note:    this function can be used to save power by turning off the RS232
  6797.       drivers.  It can also be used to turn on the RS232 drivers before
  6798.       connecting to a remote system to avoid "garbage" while the drivers
  6799.       turn on.
  6800. SeeAlso: AH=23h"HUNTER",AH=24h"HUNTER",AH=26h"HUNTER"
  6801. --------S-1426------------------------------------
  6802. INT 14 - HUNTER 16 - CONTROL RI POWER UP
  6803.     AH = 26h
  6804.     AL = 00h enable RI power up
  6805.         else disable RI power up
  6806. Return: nothing
  6807. Desc:    control whether the Ring Indicator handshake can power up the Hunter
  6808. --------S-1427-------------------------------
  6809. INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
  6810.     AH = 27h
  6811.     DX = port number
  6812. Return: AH = status
  6813.         00h successful
  6814.         41h no such port
  6815.         42h monitor mode not active
  6816.     AL = number of characters in receive buffer
  6817. --------S-1427------------------------------------
  6818. INT 14 - HUNTER 16 - GET INSTALLED PROTOCOLS COUNT
  6819.     AH = 27h
  6820.     AL = number of extended protocols installed (since last call)
  6821. Return: AL = total number installed, including new ones
  6822. Desc:    Returns the number of extended communication protocols installed
  6823. SeeAlso: AH=25h"HUNTER",AH=28h"HUNTER"
  6824. --------S-1428------------------------------------
  6825. INT 14 - HUNTER 16 - GET PROTOCOL NAME
  6826.     AH = 28h
  6827.     AL = protocol handle
  6828.     DS:BX -> 8 character buffer for protocol name
  6829. Return: AH = status
  6830.         00h successful
  6831.         DS:BX buffer filled with the protocol name
  6832.         FFh failed
  6833. SeeAlso: AH=27h"HUNTER",AH=29h"HUNTER"
  6834. --------S-1429------------------------------------
  6835. INT 14 - HUNTER 16 - GET PROTOCOL HANDLE
  6836.     AH = 29h
  6837.     DS:BX -> buffer containing the protocol name
  6838. Return: AH = status
  6839.         00h successful
  6840.         AL = handle
  6841.         FFh failed
  6842. SeeAlso: AH=28h"HUNTER",AH=2Ah"HUNTER"
  6843. --------S-142A------------------------------------
  6844. INT 14 - HUNTER 16 - EXTENDED PROTOCOL MENU
  6845.     AH = 2Ah
  6846.     AL = protocol handle
  6847. Return: AH = status
  6848.         00h successful
  6849.         FFh failed
  6850.     AL = menu handle
  6851. SeeAlso: AH=29h"HUNTER",AH=2Bh"HUNTER"
  6852. --------S-142B------------------------------------
  6853. INT 14 - HUNTER 16 - GET EXTENDED PROTOCOL PARAMETERS
  6854.     AH = 2Bh
  6855.     AL = protocol handle
  6856.     DS:BX -> buffer for extended protocol parameters
  6857. Return: AH = status
  6858.         00h successful
  6859.         DS:BX buffer filled with extended parameters
  6860.         FFh failed
  6861. SeeAlso: AH=2Ah"HUNTER"
  6862. --------S-142C00----------------------------------
  6863. INT 14 - HUNTER 16 - GET DTR
  6864.     AX = 2C00h
  6865. Return: AH = 00h
  6866.     BL = current state
  6867.         00h     normal DTR operation
  6868.         else DTR is forced high
  6869. Desc:    Indicates whether the DTR signal on COM1 is forced high
  6870. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  6871.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  6872. SeeAlso: AH=2Ch"SET DTR"
  6873. --------S-142C------------------------------------
  6874. INT 14 - HUNTER 16 - SET DTR
  6875.     AH = 2Ch
  6876.     AL nonzero
  6877.     BL = new state
  6878.         00h     normal operation
  6879.         else force DTR high
  6880. Return: AH = 00h
  6881. Desc:    determine whether the DTR signal on COM1 should be forced high
  6882. SeeAlso: AX=2C00h
  6883. --------N-1436-------------------------------
  6884. INT 14 - ComShare - INSTALLATION CHECK
  6885.     AH = 36h
  6886. Return: AX = 4353h ('CS') if installed
  6887.         BX = bitmap of installed ports (bit 0: COM1 is gateway, etc.)
  6888.         CX reserved for future use
  6889.         WORD DX:[0100h] = ComShare version number
  6890. Program: The ComShare System is a modem-sharing program for NetBIOS and
  6891.       NetWare-based networks by NashaKala Corporation
  6892. Note:    ComShare supports the standard BIOS INT 14h calls with a slight
  6893.       change in the interpretation of speed values
  6894.       (see #00309 at AH=04h"SERIAL")
  6895. SeeAlso: AH=00h"SERIAL",AH=04h"SERIAL",AX=F4FFh
  6896. --------t-144000-----------------------------
  6897. INT 14 - I1541 - INSTALLATION CHECK
  6898.     AX = 4000h
  6899. Return: AX = 1541h if installed
  6900.         BH = I1541 major version (BCD)
  6901.         BL = I1541 minor version (BCD)
  6902.         CX = 0000h
  6903. --------t-144001-----------------------------
  6904. INT 14 - I1541 - TEST IF 1541 CABLE CONNECTED
  6905.     AX = 4001h
  6906. Return: CF clear if connected
  6907.         BL = LPT number where 1541 cable is connected (1..3)
  6908.     CF set if cable not connected
  6909. Desc:    scan all the LPT ports searching for the adapter cable
  6910. SeeAlso: AX=4000h
  6911. --------t-144002-----------------------------
  6912. INT 14 - I1541 - SELECT LPT PORT FOR OUTPUT
  6913.     AX = 4002h
  6914.     BL = LPT number (1..3)
  6915. Return: CF clear if successful
  6916.     CF set otherwise
  6917. Desc:    force the input output routines to work on the cable placed on LPT BL
  6918. SeeAlso: AX=4001h
  6919. --------t-144003-----------------------------
  6920. INT 14 - I1541 - RESET ALL DEVICES
  6921.     AX = 4003h
  6922. Return: nothing
  6923. Desc:    send a reset pulse of 100ms to all CBM devices
  6924. Note:    it is necessary to wait about 2 seconds after reset before executing
  6925.       other    instructions
  6926. SeeAlso: AX=4000h,AX=4004h
  6927. --------t-144004-----------------------------
  6928. INT 14 - I1541 - SEND LISTEN SIGNAL
  6929.     AX = 4004h
  6930.     BH = device number (0..15)
  6931. Return: CF clear if successful
  6932.     CF set on error
  6933.         AL = error number (see #00354)
  6934. SeeAlso: AX=4005h,AX=4006h
  6935.  
  6936. (Table 00354)
  6937. Values for I1541 error number:
  6938.  00h    device not present
  6939.  01h    listener not ready
  6940.  02h    missing EOI time-out
  6941.  03h    EOI not completed
  6942.  04h    data not released
  6943.  05h    frame error
  6944. --------t-144005-----------------------------
  6945. INT 14 - I1541 - SEND SECONDARY ADDRESS FOR LISTEN
  6946.     AX = 4005h
  6947.     BL = channel number and mode (see #00355)
  6948. Return: CF clear if successful
  6949.     CF set on error
  6950.         AL = error number (see #00354)
  6951. SeeAlso: AX=4004h,AX=4006h
  6952.  
  6953. Bitfields for I1541 channel number and mode:
  6954. Bit(s)    Description    (Table 00355)
  6955.  7-4    mode
  6956.     0110 read/write
  6957.     1110 close channel
  6958.     1111 open channel
  6959.  3-0    channel number
  6960. --------t-144006-----------------------------
  6961. INT 14 - I1541 - SEND UNLISTEN SIGNAL
  6962.     AX = 4006h
  6963. Return: CF clear if successful
  6964.     CF set on error
  6965.         AL = error number (see #00354)
  6966. SeeAlso: AX=4004h,AX=4005h
  6967. --------t-144007-----------------------------
  6968. INT 14 - I1541 - SEND TALK SIGNAL
  6969.     AX = 4007h
  6970.     BH = device number (0-15)
  6971. Return: CF clear if successful
  6972.     CF set on error
  6973.         AL = error number (see #00354)
  6974. SeeAlso: AX=4008h,AX=4009h
  6975. --------t-144008-----------------------------
  6976. INT 14 - I1541 - SEND SECONDARY ADDRESS FOR TALK
  6977.     AX = 4008h
  6978.     BL = channel number and mode (see #00355)
  6979. Return: CF clear if successful
  6980.     CF set on error
  6981.         AL = error number (see also #00354)
  6982.         40h turn around time-out
  6983. SeeAlso: AX=4007h,AX=4009h
  6984. --------t-144009-----------------------------
  6985. INT 14 - I1541 - SEND UNTALK SIGNAL
  6986.     AX = 4009h
  6987. Return: CF clear if successful
  6988.     CF set on error
  6989.        AL = error number (see #00354)
  6990. SeeAlso: AX=4007h,AX=4008h
  6991. --------t-14400A-----------------------------
  6992. INT 14 - I1541 - SEND A BYTE TO A DEVICE
  6993.     AX = 400Ah
  6994.     BL = byte to send
  6995.     CL = last-byte flag
  6996.         00h more bytes follow
  6997.         01h this is the last byte to be sent
  6998. Return: CF clear if successful
  6999.     CF set on error
  7000.         AL = error number (see #00354)
  7001. SeeAlso: AX=4000h,AX=400Bh
  7002. --------t-14400B-----------------------------
  7003. INT 14 - I1541 - RECEIVE A BYTE FROM A DEVICE
  7004.     AX = 400Bh
  7005. Return: CF clear if successful
  7006.         AL = byte received
  7007.         CL = last-byte flag
  7008.         00h more bytes to follow
  7009.         01h received byte is the last
  7010.     CF set on error
  7011.         AL = error number
  7012.         80h EOI response required
  7013.         81h talker not ready
  7014.         82h clock not set
  7015.         83h clock not released
  7016.         CL = 00h
  7017. SeeAlso: AX=4000h,AX=400Ah
  7018. --------t-14400C-----------------------------
  7019. INT 14 - I1541 - WAIT
  7020.     AX = 400Ch
  7021.     CX = number of 838ns microticks to wait (0000h means 65536, ~55ms)
  7022. Return: after wait period elapses
  7023. SeeAlso: AX=4000h,AX=400Dh
  7024. --------t-14400D-----------------------------
  7025. INT 14 - I1541 - LONGWAIT
  7026.     AX = 400Dh
  7027.     DX:CX = number of 838ns microticks to wait
  7028.          (0000h:0000h means 4294967296, about one hour)
  7029. Example: To wait 1s you must set DX:CX=(1s/838ns)=1193180
  7030. SeeAlso: AX=4000h,AX=400Ch
  7031. --------t-14400E-----------------------------
  7032. INT 14 - I1541 - GET INFO
  7033.     AX = 400Eh
  7034. Return: AX = LPT port I/O address in use (0000h if no cable in use)
  7035.     BL = LPT number (1..3) in use (00h if no cable in use)
  7036.     CF set if the cable is auto-detectable
  7037.     CF clear if cable could not be auto-detected or is not present
  7038. SeeAlso: AX=4000h
  7039. --------S-1456-------------------------------
  7040. INT 14 U - BWCOM14 - INSTALLATION CHECK
  7041.     AH = 56h
  7042. Return: CX = 0001h if installed
  7043. Program: BWCOM14 is a network serial port emulator (simulating a Hayes modem
  7044.       connected to the serial port) distributed as part of the
  7045.       Beame&Whiteside BW-NFS package
  7046. SeeAlso: AH=57h,AH=58h,INT 2F/AX=DF00h/BX=5445h
  7047. --------S-1457-------------------------------
  7048. INT 14 U - BWCOM14 - INITIALIZE
  7049.     AH = 57h
  7050.     DL = port number
  7051. Return: AL = initialization status (00h successful, 01h already initialized)
  7052.     CX = port status (0001h port redirected, 0002h and FFFFh failed)
  7053. Note:    after this call, all invocations of INT 14/AH=00h-03h for the specified
  7054.       port will be handled by BWCOM14 until AH=58h is called
  7055. SeeAlso: AH=00h"SERIAL",AH=56h,AH=58h
  7056. --------S-1458-------------------------------
  7057. INT 14 U - BWCOM14 - SHUTDOWN
  7058.     AH = 58h
  7059. Return: CX = status (0001h successful, 0002h not initialized)
  7060. Note:    after this call, BWCOM14 will no longer redirect the COM port
  7061. SeeAlso: AH=56h,AH=57h
  7062. --------N-146F--BXFFFE-----------------------
  7063. INT 14 U - Connection Manager - ???
  7064.     AH = 6Fh
  7065.     BX = FFFEh
  7066.     ???
  7067. Return: ???
  7068. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  7069.       serial ports over an IPX or NetBIOS-based network
  7070. --------N-146F--BXFFFF-----------------------
  7071. INT 14 - Connection Manager - INSTALLATION CHECK
  7072.     AH = 6Fh
  7073.     BX = FFFFh
  7074. Return: DX:BX -> Connection Manager Communication Table if installed
  7075.     BX = FFFFh if not installed
  7076. SeeAlso: AH=0Dh/DX=FFFFh
  7077. --------S-146F00-----------------------------
  7078. INT 14 - HP Vectra EX-BIOS - "F14_INQUIRE" - INSTALLATION CHECK
  7079.     AX = 6F00h
  7080.     BX <> 4850h (usually set to 0000h for simplicity)
  7081. Return: BX = 4850h ("HP") if HP Extended BIOS serial port extensions available
  7082.     AX destroyed
  7083. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  7084. SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,INT 10/AX=6F00h,INT 14/AX=6F00h
  7085. SeeAlso: INT 17/AX=6F00h,INT 33/AX=6F00h
  7086. --------S-146F01-----------------------------
  7087. INT 14 - HP Vectra EX-BIOS - "F14_EXINIT" - INITIALIZE SERIAL PORT
  7088.     AX = 6F01h
  7089.     BX = port attributes (see #00356)
  7090.     DX = port number (0-3)
  7091. Return: AH = line status (see #00304)
  7092.     AL = modem status (see #00305)
  7093. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  7094. SeeAlso: AX=6F00h
  7095.  
  7096. Bitfields for HP Vectra Extended BIOS serial port attributes:
  7097. Bit(s)    Description    (Table 00356)
  7098.  8-5    data rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200)
  7099.  4-3    parity
  7100.     00 none
  7101.     01 odd
  7102.     10 none
  7103.     11 even
  7104.  2    stop bits (0 = one, 1 = two)
  7105.  1-0    bits per character
  7106.     10 seven-bit characters
  7107.     11 eight-bit characters
  7108.     0x undefined
  7109. --------S-146F02-----------------------------
  7110. INT 14 - HP Vectra EX-BIOS - "F14_PUT_BUFFER" - TRANSMIT BUFFER
  7111.     AX = 6F02h
  7112.     CX = number of characters in buffer
  7113.     DX = port number (0-3)
  7114.     ES:DI -> buffer containing characters
  7115. Return: AH = line status (see #00304)
  7116.     AL = modem status (see #00305)
  7117.     CX = number of bytes actually sent
  7118.     ES:DI -> next byte to be transferred (unchanged if all bytes sent)
  7119. Desc:    send characters from the specified buffer until all characters have
  7120.       been sent or an error/timeout is encountered
  7121. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  7122. SeeAlso: AX=6F00h,AX=6F03h,AX=6F04h,INT 17/AX=6F02h
  7123. --------S-146F03-----------------------------
  7124. INT 14 - HP Vectra EX-BIOS - "F14_GET_BUFFER" - READ DATA INTO BUFFER
  7125.     AX = 6F03h
  7126.     CX = size of buffer
  7127.     DX = port number (0-3)
  7128.     ES:DI -> buffer for received characters
  7129. Return: AH = line status (see #00304)
  7130.     ---on error (AH bit 7 set)---
  7131.        AL = 00h
  7132.        ES:DI -> next byte to be transferred
  7133.     ---if successful---
  7134.        AL = last byte read
  7135.        ES:DI unchanged
  7136.     CX = number of bytes read
  7137. Desc:    read characters into the specified buffer until the buffer is filled
  7138.       or a timeout occurs
  7139. Notes:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  7140.     polls the Data Set Ready modem status and Data Ready line status bits
  7141.       to determine when characters are available
  7142. SeeAlso: AX=6F00h,AX=6F02h,AX=6F04h
  7143. --------S-146F04-----------------------------
  7144. INT 14 - HP Vectra EX-BIOS - "F14_TRM_BUFFER" - READ UNTIL TERMINATOR
  7145.     AX = 6F04h
  7146.     BL = lowest termination character
  7147.     BH = highest termination character
  7148.     CX = size of buffer
  7149.     DX = port number (0-3)
  7150.     ES:DI -> buffer for received characters
  7151. Return: AH = line status (see #00304)
  7152.     ---on error (AH bit 7 set)---
  7153.        AL = 00h
  7154.        ES:DI -> next byte to be transferred
  7155.     ---if successful---
  7156.        AL = last byte read
  7157.        ES:DI unchanged
  7158.     CX = number of bytes read
  7159. Desc:    read characters into the specified buffer until the buffer is filled,
  7160.       a character in the specified range is received, or a timeout occurs
  7161. Notes:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  7162.     polls the Data Set Ready modem status and Data Ready line status bits
  7163.       to determine when characters are available
  7164. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h
  7165. --------U-147000-----------------------------
  7166. INT 14 - NEWCOM - INSTALLATION CHECK
  7167.     AX = 7000h
  7168. Return: AX = 4E43h ('NC') if installed
  7169.     BX = 4F4Dh ('OM') if installed
  7170.         CH = major version number
  7171.         CL = minor version number
  7172.         DH = patch level
  7173.         DL = language (currently: 00h English, 01h French)
  7174. Program: Newcom is a DOS commandline-enhancer by kilobug@kali.isicom.fr
  7175. SeeAlso: INT 2F/AX=D44Dh
  7176. --------S-147E-------------------------------
  7177. INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
  7178.     AH = 7Eh
  7179.     AL = code assigned to external application (80h-BFh)
  7180.         80h reserved for communications FOSSIL
  7181.         81h video FOSSIL
  7182.         82h reserved for keyboard FOSSIL
  7183.         83h reserved for system FOSSIL
  7184.     ES:DX -> entry point
  7185. Return: AX = 1954h
  7186.     BL = code assigned to application (same as input AL)
  7187.     DH = status
  7188.         00h failed
  7189.         01h successful
  7190. SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
  7191. --------S-147F-------------------------------
  7192. INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
  7193.     AH = 7Fh
  7194.     AL = code assigned to external application
  7195.     ES:DX -> entry point
  7196. Return: AX = 1954h
  7197.     BL = code assigned to application (same as input AL)
  7198.     DH = status
  7199.         00h failed
  7200.         01h successful
  7201. SeeAlso: AH=7Eh
  7202. --------S-1480-------------------------------
  7203. INT 14 - COMMUNICATIONS FOSSIL
  7204.     AH = 80h
  7205. SeeAlso: AH=7Eh
  7206. --------S-1480-------------------------------
  7207. INT 14 - COURIERS.COM - INSTALLATION CHECK
  7208.     AH = 80h
  7209. Return: AH = E8h if loaded
  7210. Program: COURIERS is a TSR utility by PC Magazine
  7211. --------S-148000-----------------------------
  7212. INT 14 - ARTICOM - INSTALLATION CHECK
  7213.     AX = 8000h
  7214. Return: AL = FFh if installed
  7215.         BH = major version
  7216.         BL = minor version
  7217. Program: ArtiCom is an asynchronous communications driver by Artisoft which
  7218.       works on top of NetBIOS and allows modem/serial-port sharing by
  7219.       programs using INT 14 for serial I/O.
  7220. Note:    ArtiCom supports 32 simultaneous COM ports using multiport cards and
  7221.       drivers
  7222. SeeAlso: AH=00h"SERIAL",AH=01h,AH=02h,AH=03h,AH=04h"SERIAL",AH=05h"SERIAL"
  7223. SeeAlso: AX=8001h,AX=8002h
  7224. --------S-148000-----------------------------
  7225. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET ERROR CODE AND BUFFER STATUS
  7226.     AX = 8000h
  7227.     DX = port number
  7228. Return: AX = code for last error (see #00357)
  7229.     BX = number of characters in output buffer
  7230.     CX = nubmer of characters in input buffer
  7231.     DX = state flag (see #00358)
  7232. Program: COMM-DRV is a universal serial communications driver by Willies'
  7233.       Computer Software Company, which supports standard INT 14 and
  7234.       FOSSIL calls as well as its own interfaces
  7235. SeeAlso: AX=8001h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  7236.  
  7237. (Table 00357)
  7238. Values for COMM-DRV error code:
  7239.  00h    no error
  7240.  01h    buffer not set or attempted to change buffer for active port
  7241.  02h    port not active
  7242.  03h    transmit buffer full
  7243.  04h    receive buffer full
  7244.  05h    syntax error
  7245.  06h    invalid buffer size
  7246.  07h    invalid port
  7247.  08h    handler changed
  7248.  09h    invalid baud rate
  7249.  0Ah    invalid parity setting
  7250.  0Bh    invalid data length
  7251.  0Ch    invalid number of stop bits
  7252.  0Dh    invalid protocol number
  7253.  0Eh    IRQ changed
  7254.  0Fh    port changged
  7255.  10h    invalid threshold setting
  7256.  11h    invalid IRQ number
  7257.  12h    interrupts not enabled
  7258.  13h    invalid break syntax
  7259.  14h    fatal error
  7260.  15h    CTS error
  7261.  16h    invalid RS232 I/O port address
  7262.  17h    environment variable not set
  7263.  18h    error on IOCTL call
  7264.  19h    error during atexit cleanup
  7265.  1Ah    error mapping for direct calls
  7266.  1Bh    error opening device
  7267.  1Ch    unable to allocate memory
  7268.  1Dh    error on external micro card
  7269.  1Eh    card changed error
  7270.  1Fh    card type error
  7271.  20h    not supported
  7272.  21h    parent port error
  7273.  22h    card command buffer full
  7274.  23h    no subdevice for this port
  7275.  24h    unknown error
  7276.  25h    external card busy
  7277.  26h    no more timers available
  7278.  27h    INT 14 vector changed
  7279.  28h    INT 08 vector changed
  7280.  29h    DPMI error
  7281.  2Ah    TSR buffer too small (or nonexistent)
  7282.  2Bh    out of asynchronous resources
  7283.  2Ch    out of timer resources
  7284.  2Dh    out of "other" timer resources
  7285.  2Eh    file I/O error
  7286.  2Fh    hardware memory > 64K
  7287.  
  7288. Bitfields for state flag :
  7289. Bit(s)    Description    (Table 00358)
  7290.  0    port is active
  7291.  1    output throttled (XOFF received, or DSR or CTS reset)
  7292.  2    input throttled (XOFF sent, or DTR or RTS reset)
  7293. --------S-148001-----------------------------
  7294. INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY
  7295.     AX = 8001h
  7296. Return: AX = error code, if error (see #00360)
  7297. SeeAlso: AX=8000h"ARTICOM",AX=8002h"ARTICOM",AX=8003h"ARTICOM"
  7298. Index:    uninstall;ARTICOM
  7299. --------S-148001-----------------------------
  7300. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  7301.     AX = 8001h
  7302.     DX = port number
  7303. Return: BX:DI -> Port Control Block (see #00367)
  7304. SeeAlso: AX=8000h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  7305. --------S-148002-----------------------------
  7306. INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS
  7307.     AX = 8002h
  7308.     ES:DI -> buffer for redirector status structure (see #00359)
  7309. Return: AX = error code, if error (see #00360)
  7310. SeeAlso: AX=8000h"ARTICOM",AX=8003h"ARTICOM"
  7311.  
  7312. Format of ARTICOM redirector status:
  7313. Offset    Size    Description    (Table 00359)
  7314.  00h    WORD    redirector major and minor version numbers
  7315.  02h    WORD    redirectable ports found
  7316.  04h    WORD    redirectable ports + local ports found
  7317.  06h    WORD    redirector internal buffer size
  7318.  08h    WORD    maximum servers maintained
  7319.  0Ah    WORD    number of adapters found
  7320. --------S-148002-----------------------------
  7321. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  7322.     AX = 8002h
  7323.     DX = port number
  7324. Return: AH bit 7 set on error
  7325.     AH bit 7 clear if successful
  7326.         BX:DI -> Port Control Block (see #00367) (modifyable portion only)
  7327. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8003h"COMM-DRV"
  7328. --------S-148003-----------------------------
  7329. INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING
  7330.     AX = 8003h
  7331.     CX = error number to translate (see #00360)
  7332. Return: ES:DI -> ASCIZ error text or 0000h:0000h if unable to translate
  7333. SeeAlso: AX=8000h
  7334.  
  7335. (Table 00360)
  7336. Values for ARTICOM error codes:
  7337.  00h    "No error"
  7338.  01h    "An invalid port number was specified"
  7339.  02h    "Port is already redirected"
  7340.  03h    "Too many ports redirected"
  7341.  04h    "Cannot locate the server"
  7342.  05h    "Server is busy"
  7343.  06h    "Access denied"
  7344.  07h    "Resource in use"
  7345.  08h    "Resource in use - request queued"
  7346.  09h    "No such resource"
  7347.  0Ah    "Invalid username/password pair"
  7348.  0Bh    "Noncompatible version number"
  7349.  0Ch    "Can't remove from memory"
  7350.  0Dh    "Bad NETBIOS adapter number"
  7351.  0Eh    "No more entries in list"
  7352.  0Fh    "Resource is not available at this time"
  7353.  10h    "Invalid value to INT 14 call"
  7354. --------S-148003-----------------------------
  7355. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET I/O BUFFER SIZES
  7356.     AX = 8003h
  7357.     DX = port number
  7358. Return: AX = number of characters in input buffer
  7359.     BX = input buffer size
  7360.     CX = number of characters in output buffer
  7361.     DX = output buffer size
  7362. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8002h"COMM-DRV"
  7363. --------S-148004-----------------------------
  7364. INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE
  7365.     AX = 8004h
  7366.     DX = port to redirect (COM1=0, COM2=1, ...)
  7367.     CH = attach type
  7368.     CL = adapter to use for attach, 0FFh to search all
  7369.     ES:DI -> attachment structure (see #00361)
  7370. Return: AX = error code, if error (see #00360)
  7371. Note:    The wildcard '*' is supported in the server and resource fields.  If
  7372.       wild cards are used then the first matching available server is
  7373.       attached.
  7374. SeeAlso: AX=8000h,AX=8003h,AX=8005h
  7375.  
  7376. Format of ARTICOM attachment structure:
  7377. Offset    Size    Description    (Table 00361)
  7378.  00h 16 BYTEs    server to look for attach
  7379.  10h 16 BYTEs    attach to resource name
  7380.  20h 16 BYTEs    username for attach
  7381.  30h 16 BYTEs    password for username or resource
  7382.  40h    BYTE    attach type
  7383.         00h normal
  7384.         01h queue if resource is in use (not yet supported in v1.00)
  7385. --------S-148005-----------------------------
  7386. INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE
  7387.     AX = 8005h
  7388.     DX = port to detach (COM1=0, COM2=1, ...)
  7389. Return: AX = error code, if error (see #00360)
  7390. Note:    only a previously attached resource can be detached
  7391. SeeAlso: AX=8000h,AX=8003h,AX=8004h
  7392. --------S-148006-----------------------------
  7393. INT 14 - ARTICOM - GET RESOURCE INFORMATION
  7394.     AX = 8006h
  7395.     BX = remote port (COM1=0, COM2=1, ...)
  7396.     CL = adapter number, FFh to try all adapters
  7397.     ES:DI -> resource information structure (see #00362)
  7398.     DS:SI -> 16 byte server name. See note.
  7399. Return: AX = error code, if error (see #00360)
  7400.     BX = next remote port, recall to get next resource info
  7401. Note:    Wild cards supported in both the resource field and server name
  7402.       string DS:SI. If wild cards used then first matching available
  7403.       resource information is searched. Set the resource field to FFh to
  7404.       return all resources.
  7405. SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h
  7406.  
  7407. Format of ARTICOM resource information structure:
  7408. Offset    Size    Description    (Table 00362)
  7409.  00h    BYTE    00h = free, else used
  7410.  01h 16 BYTEs    resource name
  7411.  11h 16 BYTEs    username of resource user
  7412.  21h    WORD    amount of time used
  7413.  23h    WORD    amount of time remaining
  7414.  53h 48 BYTEs    description of resource
  7415.  93h 64 BYTEs    initialization string for modem
  7416.  B3h 32 BYTEs    dial string for modem
  7417.  D3h 32 BYTEs    hang-up string for modem
  7418. --------S-148007-----------------------------
  7419. INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION
  7420.     AX = 8007h
  7421.     DX = port index (COM1=0, COM2=1, ...)
  7422.     ES:DI -> buffer for port information structure (see #00363)
  7423. Return: CF clear if redirection info returned and port is redirected
  7424.     CF set if not a redirected port
  7425.     AX = error code, if error (see #00360)
  7426. SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
  7427.  
  7428. Format of ARTICOM port information structure:
  7429. Offset    Size    Description    (Table 00363)
  7430.  00h 16 BYTEs    server name resource is on
  7431.  10h    BYTE    adapter number server is on
  7432.  11h 16 BYTEs    resource name
  7433.  21h    WORD    remote port index, use to get additional information
  7434.  23h    WORD    buffer size
  7435.  25h    WORD    baud rate (see #00364)
  7436.  26h    BYTE    modem status register
  7437.  27h    BYTE    modem control register
  7438.  28h    BYTE    line status register
  7439.  29h    BYTE    line control register
  7440.  2Ah    BYTE    flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS
  7441.  2Bh    WORD    send timeout in ticks
  7442.  2Dh    WORD    receive timeout in ticks
  7443.  2Fh    WORD    time used on remote port
  7444.  31h    WORD    time left before timeout
  7445.  33h    BYTE    if server changes allowed?
  7446.  34h    WORD    FFFFh (-1) if connection ok, else old port index
  7447.  
  7448. (Table 00364)
  7449. Values for ARTICOM baud rate:
  7450.  00h    110
  7451.  01h    150
  7452.  02h    300
  7453.  03h    600
  7454.  04h    1200
  7455.  05h    2400
  7456.  06h    4800
  7457.  07h    9600
  7458.  08h    19200
  7459.  09h    38400
  7460.  0Ah    57600
  7461.  0Bh    115200
  7462.  0Ch    134.5
  7463.  0Dh    1800
  7464.  0Eh    2000
  7465.  0Fh    3600
  7466.  10h    7200
  7467. SeeAlso: #00309
  7468. --------S-148008-----------------------------
  7469. INT 14 - ARTICOM - GET AVAILABLE SERVER NAME
  7470.     AX = 8008h
  7471.     BX = server index (0,1,...)
  7472.     ES:DI -> server name structure (see #00365)
  7473. Return: AX = error code, if error (see #00360)
  7474.     BX = next remote port, repeat call to get next available server
  7475. Note:    the wildcard '*' is supported in the server name field.     Set the
  7476.       server name to FFh to search for all servers.
  7477. SeeAlso: AX=8000h,AX=8003h,AX=8007h
  7478.  
  7479. Format of ARTICOM server name structure:
  7480. Offset     Size      Description    (Table 00365)
  7481.   00h 16 BYTEs      (call) ASCIZ server name
  7482.   10h     BYTE      (ret) the adapter server is found
  7483. --------S-148009-----------------------------
  7484. INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS
  7485.     AX = 8009h
  7486.     BX = send timeout in ticks
  7487.     CX = receive timeout in ticks
  7488.     DX = port index (COM1=0, COM2=1, ...)
  7489. Return: nothing
  7490. SeeAlso: AX=8000h,AX=800Ah
  7491. --------S-14800A-----------------------------
  7492. INT 14 - ARTICOM - MODIFY FLOW CONTROL
  7493.     AX = 800Ah
  7494.     BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS)
  7495.     DX = port index (COM1=0, COM2=1, ...)
  7496. Return: AX = error code, if error (see #00360)
  7497. Note:    for attached ports only!
  7498. SeeAlso: AX=8000h,AX=8003h,AX=8009h
  7499. --------S-148025-----------------------------
  7500. INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR
  7501.     AX = 8025h
  7502.     DS:DX -> address of trap function (see #00366) to call on read/write
  7503. Return: nothing
  7504. Note:    setting the vector to a user function allows the redirector's activity
  7505.       to be monitored.
  7506. SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h
  7507.  
  7508. (Table 00366)
  7509. Values ARTICOM trap function is called with:
  7510.     AH = operation
  7511.         80h reading character
  7512.         81h writing character
  7513.     AL = character
  7514. Return: AX must be preserved
  7515.     far JUMP to old trap function (see AX=8035h)
  7516. --------S-148035-----------------------------
  7517. INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR
  7518.     AX = 8035h
  7519. Return: ES:BX -> address of current send/receive routine
  7520. Note:    this function returns the address of the routine which is called
  7521.       inside A-REDIR.EXE each time a character is received or sent on the
  7522.       active COM port.
  7523. SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h
  7524. --------S-1481-------------------------------
  7525. INT 14 - COURIERS.COM - CHECK IF PORT BUSY
  7526.     AH = 81h
  7527.     AL = port number (1-4)
  7528. Return: AH = status
  7529.         00h port available
  7530.         01h port exists but already in use
  7531.         02h port nonexistent
  7532. Program: COURIERS is a TSR utility by PC Magazine
  7533. SeeAlso: AH=83h,AH=8Dh
  7534. --------S-1481-------------------------------
  7535. INT 14 - COMM-DRV - EXTENDED INITIALIZATION
  7536.     AH = 81h
  7537.     BX:DI -> port control block (see #00367)
  7538.     DX = port number
  7539. Return: AH = line status register (see #00304)
  7540.         error if bit 7 set
  7541.     AL = modem status register (see #00305)
  7542. Program: COMM-DRV is a universal serial communications driver by Willies'
  7543.       Computer Software Company, which supports standard INT 14 and
  7544.       FOSSIL calls as well as its own interfaces
  7545. Note:    AX=8001h should be called first to fill in the port control block
  7546. SeeAlso: AH=00h,AX=8001h,AH=82h"COMM-DRV",AH=86h"COMM-DRV"
  7547.  
  7548. Format of COMM-DRV port control block:
  7549. Offset    Type    Description    (Table 00367)
  7550.  00h    WORD    port IO address
  7551.  02h    WORD    port IRQ
  7552.  04h    WORD    baud rate
  7553.  06h    WORD    parity
  7554.  08h    WORD    data bits
  7555.  0Ah    WORD    stop bits
  7556.  0Ch    WORD    break status (0000h off)
  7557.  0Eh    WORD    flow control protocol
  7558.  10h    BYTE    input block
  7559.  11h    BYTE    output block
  7560.  12h    WORD    low threshold
  7561.  14h    WORD    high threshold
  7562.  16h    WORD    segment of buffer
  7563.  18h    WORD    offset of buffer
  7564.  1Ah    WORD    input buffer length
  7565.  1Ch    WORD    output buffer length
  7566.  1Eh    BYTE    auxiliary address
  7567.  1Fh    BYTE    spare
  7568.  20h  4 WORDs    spares
  7569. --------V-148100-----------------------------
  7570. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  7571.     AX = 8100h
  7572.     ES:DI -> buffer for VFOSSIL information (see #00368)
  7573. Return: AX = 1954h if installed
  7574. SeeAlso: AH=7Eh,AX=8101h
  7575.  
  7576. Format of VFOSSIL information:
  7577. Offset    Size    Description    (Table 00368)
  7578.  00h    WORD    size of information in bytes, including this field
  7579.  02h    WORD    VFOSSIL major version
  7580.  04h    WORD    VFOSSIL revision level
  7581.  06h    WORD    highest VFOSSIL application function supported
  7582. --------V-148101-----------------------------
  7583. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  7584.     AX = 8101h
  7585.     ES:DI -> buffer for application function table (see #00369)
  7586.     CX = length of buffer in bytes
  7587. Return: AX = 1954h if installed
  7588.         BH = highest VFOSSIL application function supported
  7589. Note:    the number of initialized pointers in the application function table
  7590.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  7591.       will be initialized
  7592. SeeAlso: AX=8102h
  7593.  
  7594. Format of VFOSSIL application function table:
  7595. Offset    Size    Description    (Table 00369)
  7596.  00h    DWORD    -> function to query current video mode (VioGetMode)(see #00374)
  7597.  04h    DWORD    -> function to set video mode (VioSetMode) (see #00375)
  7598.  08h    DWORD    -> function to query hardware config (VioGetConfig) (see #00376)
  7599.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY) (see #00377)
  7600.  10h    DWORD    -> function to get current ANSI state (VioGetANSI) (see #00378)
  7601.  14h    DWORD    -> function to set new ANSI state (VioSetANSI) (see #00379)
  7602.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  7603.           (see #00380)
  7604.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos) (see #00381)
  7605.  20h    DWORD    -> function to get cursor shape (VioGetCurType) (see #00382)
  7606.  24h    DWORD    -> function to set cursor shape (VioSetCurType) (see #00383)
  7607.  28h    DWORD    -> function to scroll screen up (VioScrollUp) (see #00384)
  7608.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn) (see #00385)
  7609.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  7610.           (see #00386)
  7611.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  7612.           (see #00387)
  7613.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  7614.           (see #00388)
  7615.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  7616.           (see #00389)
  7617.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  7618.           (see #00390)
  7619.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  7620.           (see #00391)
  7621.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  7622.           (see #00392)
  7623.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  7624.           (see #00393)
  7625.  
  7626. Format of VFOSSIL video mode data structure:
  7627. Offset    Size    Description    (Table 00370)
  7628.  00h    WORD    length of structure including this field
  7629.  02h    BYTE    mode characteristics
  7630.         bit 0: clear if MDA, set otherwise
  7631.         bit 1: graphics mode
  7632.         bit 2: color disabled (black-and-white)
  7633.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  7634.  04h    WORD    number of text columns
  7635.  06h    WORD    number of text rows
  7636.  08h    WORD    reserved
  7637.  0Ah    WORD    reserved
  7638.  0Ch    DWORD    reserved
  7639. SeeAlso: #00374,#00375
  7640.  
  7641. Format of VFOSSIL video configuration data:
  7642. Offset    Size    Description    (Table 00371)
  7643.  00h    WORD    structure length including this field
  7644.  02h    WORD    adapter type
  7645.         00h monochrome/printer
  7646.         01h CGA
  7647.         02h EGA
  7648.         03h VGA
  7649.         07h 8514/A
  7650.  04h    WORD    display type
  7651.         00h monochrome
  7652.         01h color
  7653.         02h enhanced color
  7654.         09h 8514
  7655.  06h    DWORD    adapter memory size
  7656. SeeAlso: #00376
  7657.  
  7658. Format of VFOSSIL cursor type record:
  7659. Offset    Size    Description    (Table 00372)
  7660.  00h    WORD    cursor start line
  7661.  02h    WORD    cursor end line
  7662.  04h    WORD    cursor width (always 01h)
  7663.  06h    WORD    cursor attribute (FFFFh = hidden)
  7664.  
  7665. (Table 00373)
  7666. Values for VFOSSIL error code:
  7667.  0000h    successful
  7668.  0074h    internal VIO failure
  7669.  0163h    unsupported mode
  7670.  0166h    invalid row value
  7671.  0167h    invalid column value
  7672.  017Eh    buffer too small
  7673.  01A5h    invalid VIO parameter
  7674.  01B4h    invalid VIO handle
  7675.  
  7676. (Table 00374)
  7677. Call VioGetMode with:
  7678.     STACK:    WORD    VIO handle (must be 00h)
  7679.         DWORD    pointer to video mode data structure (see #00370)
  7680. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #00373)
  7681. SeeAlso: #00375
  7682.  
  7683. (Table 00375)
  7684. Call VioSetMode with:
  7685.     STACK:    WORD    VIO handle (must be 00h)
  7686.         DWORD    pointer to video mode data structure (see #00370)
  7687. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see #00373)
  7688. SeeAlso: #00374
  7689.  
  7690. (Table 00376)
  7691. Call VioGetConfig with:
  7692.     STACK:    WORD    VIO handle (must be 00h)
  7693.         DWORD    pointer to video configuration data buffer (see #00371)
  7694. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #00373)
  7695.  
  7696. (Table 00377)
  7697. Call VioWrtTTY with:
  7698.     STACK:    WORD    VIO handle (must be 00h)
  7699.         WORD    length of string
  7700.         DWORD    pointer to character string to be written to screen
  7701. Return: AX = error code (00h, 74h, 1B4h) (see #00373)
  7702. Notes:    write wraps at end of line and terminates if it reaches end of screen
  7703.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  7704.       not required to be reentrant; in non-ANSI mode, the function is
  7705.       reentrant and may be called from within an MS-DOS function call
  7706.  
  7707. (Table 00378)
  7708. Call VioGetANSI with:
  7709.     STACK:    WORD    VIO handle (must be 00h)
  7710.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  7711.             or 01h if ANSI is on
  7712. Return: AX = error code (00h, 74h, 1B4h) (see #00373)
  7713. SeeAlso: #00379
  7714.  
  7715. (Table 00379)
  7716. Call VioSetANSI with:
  7717.     STACK:    WORD    VIO handle (must be 00h)
  7718.         DWORD    pointer to WORD indicating new state of ANSI
  7719.             00h off, 01h on
  7720. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #00373)
  7721. SeeAlso: #00378
  7722.  
  7723. (Table 00380)
  7724. Call VioGetCurPos with:
  7725.     STACK:    WORD    VIO handle (must be 00h)
  7726.         DWORD    pointer to WORD to hold current cursor column (0-based)
  7727.         DWORD    pointer to WORD to hold current cursor row (0-based)
  7728. Return: AX = error code (00h, 74h, 1B4h) (see #00373)
  7729. SeeAlso: #00381
  7730.  
  7731. (Table 00381)
  7732. Call VioSetCurPos with:
  7733.     STACK:    WORD    VIO handle (must be 00h)
  7734.         WORD    cursor column
  7735.         WORD    cursor row
  7736. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373)
  7737. Note:    if either coordinate is invalid, the cursor is not moved
  7738. SeeAlso: #00380
  7739.  
  7740. (Table 00382)
  7741. Call VioGetCurType with:
  7742.     STACK:    WORD    VIO handle (must be 00h)
  7743.         DWORD    pointer to cursor type record (see #00372)
  7744. Return: AX = error code (00h, 74h, 1B4h) (see #00373)
  7745. SeeAlso: #00383
  7746.  
  7747. (Table 00383)
  7748. Call VioSetCurType with:
  7749.     STACK:    WORD    VIO handle (must be 00h)
  7750.         DWORD    pointer to cursor type record (see #00372)
  7751. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #00373)
  7752. SeeAlso: #00384
  7753.  
  7754. (Table 00384)
  7755. Call VioScrollUp with:
  7756.     STACK:    WORD    VIO handle (must be 00h)
  7757.         DWORD    pointer to char/attr cell for filling emptied rows
  7758.         WORD    number or rows to scroll (FFFFh = clear area)
  7759.         WORD    right column of scroll area
  7760.         WORD    bottom row of scroll area
  7761.         WORD    left column of scroll area
  7762.         WORD    top row of scroll area
  7763. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373)
  7764. SeeAlso: #00385,INT 10/AH=06h
  7765.  
  7766. (Table 00385)
  7767. Call VioScrollDn with:
  7768.     STACK:    WORD    VIO handle (must be 00h)
  7769.         DWORD    pointer to char/attr cell for filling emptied rows
  7770.         WORD    number or rows to scroll (FFFFh = clear area)
  7771.         WORD    right column of scroll area
  7772.         WORD    bottom row of scroll area
  7773.         WORD    left column of scroll area
  7774.         WORD    top row of scroll area
  7775. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373)
  7776. SeeAlso: #00384,INT 10/AH=07h
  7777.  
  7778. (Table 00386)
  7779. Call VioReadCellStr with:
  7780.     STACK:    WORD    VIO handle (must be 00h)
  7781.         WORD    column at which to start reading
  7782.         WORD    row at which to start reading
  7783.         DWORD    pointer to WORD containing length of buffer in bytes
  7784.             on return, WORD contains number of bytes actually read
  7785.         DWORD    pointer to buffer for cell string
  7786. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #00373)
  7787.  
  7788. (Table 00387)
  7789. Call VioReadCharStr with:
  7790.     STACK:    WORD    VIO handle (must be 00h)
  7791.         WORD    column at which to start reading
  7792.         WORD    row at which to start reading
  7793.         DWORD    pointer to WORD containing length of buffer in bytes
  7794.             on return, WORD contains number of bytes actually read
  7795.         DWORD    pointer to buffer for character string
  7796. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #00373)
  7797.  
  7798. (Table 00388)
  7799. Call VioWrtCellStr with:
  7800.     STACK:    WORD    VIO handle (must be 00h)
  7801.         WORD    column at which to start writing
  7802.         WORD    row at which to start writing
  7803.         WORD    length of cell string in bytes
  7804.         DWORD    pointer to cell string to write
  7805. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373)
  7806. Note:    write wraps at end of line and terminates if it reaches end of screen
  7807.  
  7808. (Table 00389)
  7809. Call VioWrtCharStr with:
  7810.     STACK:    WORD    VIO handle (must be 00h)
  7811.         WORD    column at which to start writing
  7812.         WORD    row at which to start writing
  7813.         WORD    length of character string
  7814.         DWORD    pointer to character string to write
  7815. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373)
  7816. Note:    write wraps at end of line and terminates if it reaches end of screen
  7817.  
  7818. (Table 00390)
  7819. Call VioWrtCharStrAttr with:
  7820.     STACK:    WORD    VIO handle (must be 00h)
  7821.         DWORD    pointer to attribute to be applied to each character
  7822.         WORD    column at which to start writing
  7823.         WORD    row at which to start writing
  7824.         WORD    length of character string
  7825.         DWORD    pointer to character string to write
  7826. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373)
  7827. Note:    write wraps at end of line and terminates if it reaches end of screen
  7828.  
  7829. (Table 00391)
  7830. Call VioWrtNAttr with:
  7831.     STACK:    WORD    VIO handle (must be 00h)
  7832.         WORD    column at which to start writing
  7833.         WORD    row at which to start writing
  7834.         WORD    number of times to write attribute
  7835.         DWORD    pointer to display attribute to replicate
  7836. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373)
  7837. Note:    write wraps at end of line and terminates if it reaches end of screen
  7838.  
  7839. (Table 00392)
  7840. Call VioWrtNCell with:
  7841.     STACK:    WORD    VIO handle (must be 00h)
  7842.         WORD    column at which to start writing
  7843.         WORD    row at which to start writing
  7844.         WORD    number of times to write cell
  7845.         DWORD    pointer to cell to replicate
  7846. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373)
  7847. Note:    write wraps at end of line and terminates if it reaches end of screen
  7848.  
  7849. (Table 00393)
  7850. Call VioWrtNChar with:
  7851.     STACK:    WORD    VIO handle (must be 00h)
  7852.         WORD    column at which to start writing
  7853.         WORD    row at which to start writing
  7854.         WORD    number of times to write character
  7855.         DWORD    pointer to character to replicate
  7856. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373)
  7857. Note:    write wraps at end of line and terminates if it reaches end of screen
  7858. --------V-148102-----------------------------
  7859. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  7860.     AX = 8102h
  7861. Return: AX = 1954h
  7862. Note:    terminates all operations; after this call, the video FOSSIL may either
  7863.       be removed from memory or reinitialized
  7864. SeeAlso: AX=8101h,AX=8103h
  7865. --------V-148103-----------------------------
  7866. INT 14 - VIDEO FOSSIL - UNINSTALL
  7867.     AX = 8103h
  7868. Return: AX = 1954h
  7869. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  7870. --------K-1482-------------------------------
  7871. INT 14 - KEYBOARD FOSSIL
  7872.     AH = 82h
  7873. SeeAlso: AH=7Eh
  7874. --------S-1482-------------------------------
  7875. INT 14 - COURIERS.COM - CONFIGURE PORT
  7876.     AH = 82h
  7877.     AL = port number (1-4)
  7878.     BX = speed (bps)
  7879.     CX = bit flags
  7880.         bit 0: enable input flow control
  7881.         bit 1: enable output flow control
  7882.         bit 2: use X.PC protocol (not yet implemented)
  7883. Return: nothing
  7884. SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
  7885. --------S-1482-------------------------------
  7886. INT 14 - COMM-DRV v14.0 - PORT CLEANUP
  7887.     AH = 82h
  7888.     DX = port number
  7889. Return: AH bit 7 set on error
  7890.     AH bit 7 clear if successful
  7891. Desc:    reset the port to its state before the AH=81h initialization and unhook
  7892.       any interrupts used by the port
  7893. SeeAlso: AH=81h"COMM-DRV",AH=83h"COMM-DRV"
  7894. ----------1483-------------------------------
  7895. INT 14 - SYSTEM FOSSIL
  7896.     AH = 83h
  7897. SeeAlso: AH=7Eh
  7898. --------S-1483-------------------------------
  7899. INT 14 - COURIERS.COM - START INPUT
  7900.     AH = 83h
  7901.     ES:BX -> circular input buffer
  7902.     CX = length of buffer
  7903.         (should be at least 128 bytes if input flow control enabled)
  7904. Return: nothing
  7905. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
  7906. --------S-1483-------------------------------
  7907. INT 14 - COMM-DRV v14.0 - FLUSH COMMUNICATION BUFFERS
  7908.     AH = 83h
  7909.     DX = port number
  7910.     AL = subfunction
  7911.         00h flush input buffer
  7912.         01h flush output buffer
  7913.         02h flush both buffers
  7914. Return: AH bit 7 set on error
  7915.     AH bit 7 clear if successful
  7916. SeeAlso: AH=81h"COMM-DRV",AH=84h"COMM-DRV"
  7917. --------S-1484-------------------------------
  7918. INT 14 - COURIERS.COM - READ CHARACTER
  7919.     AH = 84h
  7920. Return: ZF set if no characters available
  7921.     ZF clear
  7922.        AL = character
  7923.        AH = modem status bits
  7924.         bit 7: set on input buffer overflow
  7925. SeeAlso: AH=02h,AH=86h,AH=89h
  7926. --------S-1484-------------------------------
  7927. INT 14 - COMM-DRV v14.0 - SEND PACKET
  7928.     AH = 84h
  7929.     CX = packet length in bytes
  7930.     DX = port number
  7931.     ES:DI -> packet to be sent
  7932. Return: AH = line status (see #00304)
  7933.         bit 7 set on error
  7934.     AL destroyed
  7935. SeeAlso: AH=83h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  7936. --------S-1485-------------------------------
  7937. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  7938.     AH = 85h
  7939. Return: nothing
  7940. SeeAlso: AH=0Ah,AH=88h"COURIERS"
  7941. --------S-1485-------------------------------
  7942. INT 14 - COMM-DRV v14.0 - RECEIVE PACKET
  7943.     AH = 85h
  7944.     CX = length of packet in bytes
  7945.     DX = port number
  7946.     ES:DI -> buffer for packet
  7947. Return: AH = line status (see #00304)
  7948.         bit 7 set on error
  7949.     AL destroyed
  7950. Note:    this call requires that at least the requested number of bytes are
  7951.       already present in the input buffer, and will fail if there are
  7952.       fewer bytes available
  7953. SeeAlso: AH=84h"COMM-DRV",AH=86h"COMM-DRV",AH=8Eh"COMM-DRV"
  7954. --------S-1486-------------------------------
  7955. INT 14 - COURIERS.COM - START OUTPUT
  7956.     AH = 86h
  7957.     ES:BX -> output buffer
  7958.     CX = length of output buffer
  7959. Return: nothing
  7960. SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
  7961. --------S-1486-------------------------------
  7962. INT 14 - COMM-DRV v14.0 - SET INPUT/OUTPUT TIMEOUTS
  7963.     AH = 86h
  7964.     BL = maximum clock ticks to wait before signalling error on input func
  7965.     BH = maximum clock ticks to wait before signalling error on output
  7966.     DX = port number
  7967.     SI = input timeout in clock ticks if BL=FFh and BH=FFh
  7968.     DI = output timeout in clock ticks if BL=FFh and BH=FFh
  7969. Return: AH bit 7 set on error
  7970.     AH bit 7 clear if successful
  7971. Note:    functions 02h, 85h, and 8Eh will wait for the input timeout before
  7972.       returning an error when no data is available; functions 01h and 84h
  7973.       will wait for the output timeout before returning an error if there
  7974.       is no space to output the data
  7975. SeeAlso: AH=01h,AH=02h,AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=8Eh"COMM-DRV"
  7976. --------S-1487-------------------------------
  7977. INT 14 - COURIERS.COM - OUTPUT STATUS
  7978.     AH = 87h
  7979. Return: AX = number of unsent characters
  7980. SeeAlso: AH=88h"COURIERS"
  7981. --------S-1487-------------------------------
  7982. INT 14 - COMM-DRV v14.0 - TURN ON DTR
  7983.     AH = 87h
  7984.     DX = port number
  7985. Return: AH bit 7 set on error
  7986.     AH bit 7 clear if successful
  7987. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  7988. --------S-1488-------------------------------
  7989. INT 14 - COURIERS.COM - ABORT OUTPUT
  7990.     AH = 88h
  7991. SeeAlso: AH=09h"FOSSIL",AH=85h"COURIERS"
  7992. --------S-1488-------------------------------
  7993. INT 14 - COMM-DRV v14.0 - TURN OFF DTR
  7994.     AH = 88h
  7995.     DX = port number
  7996. Return: AH bit 7 set on error
  7997.     AH bit 7 clear if successful
  7998. Program: COMM-DRV is a universal serial communications driver by Willies'
  7999.       Computer Software Company, which supports standard INT 14 and
  8000.       FOSSIL calls as well as its own interfaces
  8001. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  8002. --------S-1489-------------------------------
  8003. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  8004.     AH = 89h
  8005.     CL = character to send
  8006. Return: nothing
  8007. SeeAlso: AH=01h,AH=84h"COURIERS"
  8008. --------S-1489-------------------------------
  8009. INT 14 - COMM-DRV v14.0 - TURN ON RTS
  8010.     AH = 89h
  8011.     DX = port number
  8012. Return: AH bit 7 set on error
  8013.     AH bit 7 clear if successful
  8014. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  8015. --------S-148A-------------------------------
  8016. INT 14 - COURIERS.COM - SEND BREAK
  8017.     AH = 8Ah
  8018. Return: nothing
  8019. SeeAlso: AH=89h"COURIERS",AH=FAh
  8020. --------S-148A-------------------------------
  8021. INT 14 - COMM-DRV v14.0 - TURN OFF RTS
  8022.     AH = 8Ah
  8023.     DX = port number
  8024. Return: AH bit 7 set on error
  8025.     AH bit 7 clear if successful
  8026. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  8027. --------S-148B-------------------------------
  8028. INT 14 - COMM-DRV v14.0 - SET USER INTERRUPT ROUTINE
  8029.     AH = 8Bh
  8030.     CX = bitmask of interrupt to process
  8031.         00h = deinstall
  8032.     BX:DI -> DWORD containing address of function to be called
  8033. Return: AH bit 7 clear if successful
  8034.     AH bit 7 set on error
  8035. --------S-148C-------------------------------
  8036. INT 14 - COURIERS.COM - SET SPEED
  8037.     AH = 8Ch
  8038.     BX = speed in bps
  8039. Return: nothing
  8040. SeeAlso: AH=00h,AH=82h"COURIERS"
  8041. --------S-148C-------------------------------
  8042. INT 14 - COMM-DRV v14.0 - READ UART REGISTER
  8043.     AH = 8Ch
  8044.     AL = register offset
  8045.     DX = port number
  8046. Return: AH bit 7 set on error
  8047.     AH bit 7 clear if successful
  8048.         AL = contents of UART register
  8049. SeeAlso: AH=8Dh"COMM-DRV"
  8050. --------S-148D-------------------------------
  8051. INT 14 - COURIERS.COM - DECONFIGURE PORT
  8052.     AH = 8Dh
  8053. Return: nothing
  8054. SeeAlso: AH=82h"COURIERS"
  8055. --------S-148D-------------------------------
  8056. INT 14 - COMM-DRV v14.0 - WRITE UART REGISTER
  8057.     AH = 8Dh
  8058.     AL = register offset
  8059.     BL = new value for UART register
  8060.     DX = port number
  8061. Return: AH bit 7 set on error
  8062.     AH bit 7 clear if successful
  8063. SeeAlso: AH=8Ch"COMM-DRV"
  8064. --------S-148E-------------------------------
  8065. INT 14 - COMM-DRV v14.0 - READ PACKET NONDESTRUCTIVELY
  8066.     AH = 8Eh
  8067.     CX = length of packet in bytes
  8068.     DX = port number
  8069.     ES:DI -> buffer for packet
  8070. Return: AH = line status (see #00304)
  8071.         bit 7 set on error (see AX=8000h"COMM-DRV")
  8072.     AL destroyed
  8073. Program: COMM-DRV is a universal serial communications driver by Willies'
  8074.       Computer Software Company, which supports standard INT 14 and
  8075.       FOSSIL calls as well as its own interfaces
  8076. Desc:    retrieve a packet from the input buffer without removing it from the
  8077.       buffer
  8078. Note:    this call requires that at least the requested number of bytes are
  8079.       already present in the input buffer, and will fail if there are
  8080.       fewer bytes available
  8081. SeeAlso: AX=8000h"COMM-DRV",AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  8082. --------S-14A0-------------------------------
  8083. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  8084.     AH = A0h
  8085.     ES:BX -> ASCIZ internet host name
  8086.     CX = length of name
  8087. Return: AH = return code (00h,04h-06h,08h,0Ah-0Ch) (see #00394)
  8088.     CL = session ID
  8089. Program: the Bridge Application Program Interface is a set of functions which
  8090.       makes many of the details of LAN communications transparent
  8091. Note:    Novell TELAPI.EXE returns AH=09h (not supported) and CL=00h
  8092. SeeAlso: AH=A1h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AX=AF00h
  8093.  
  8094. (Table 00394)
  8095. Values for 3com BAPI return code:
  8096.  00h    successful
  8097.  01h    no characters written
  8098.  02h    no characters read
  8099.  03h    no such session
  8100.  04h    clearinghouse name not found
  8101.  05h    no response from host
  8102.  06h    no more sessions available
  8103.  07h    session aborted
  8104.  08h    invalid clearinghouse name
  8105.  09h    not supported
  8106.  0Ah    internal (general) network error
  8107.  0Bh    out of memory
  8108.  0Ch    invalid IP address
  8109. --------S-14A0--CXFFFF-----------------------
  8110. INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
  8111.     AH = A0h
  8112.     CX = FFFFh
  8113. Return: CF clear if successful
  8114.         AX = 5445h ('TE')
  8115.         CX <> FFFFh
  8116.         DX = port number
  8117.     CF set on error
  8118. Program: TES is a network serial port emulation program
  8119. SeeAlso: AH=A1h"TES"
  8120. --------S-14A1-------------------------------
  8121. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  8122.     AH = A1h
  8123.     DH = session ID (00h for external session managment)
  8124. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #00394)
  8125.     AL destroyed (Novell TELAPI.EXE)
  8126. SeeAlso: AH=A0h"BAPI"
  8127. --------S-14A1-------------------------------
  8128. INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
  8129.     AH = A1h
  8130. Return: CX = number of active sessions
  8131.     ES:SI -> status array (see #00395)
  8132. SeeAlso: AH=A2h"TES",AH=A3h"TES"
  8133.  
  8134. Format of Interconnections TES status array entry:
  8135. Offset    Size    Description    (Table 00395)
  8136.  00h    BYTE    status
  8137.  01h    WORD    offset of name
  8138. --------S-14A2-------------------------------
  8139. INT 14 - 3com BAPI SERIAL I/O - WRITE CHARACTER
  8140.     AH = A2h
  8141.     AL = character
  8142.     DH = session ID (00h for external session managment)
  8143. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #00394)
  8144. SeeAlso: AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  8145. --------S-14A2-------------------------------
  8146. INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
  8147.     AH = A2h
  8148. Return: CX = number of servers
  8149.     ES:SI -> array of offsets from ES for server names
  8150. SeeAlso: AH=A1h"TES"
  8151. --------S-14A3-------------------------------
  8152. INT 14 - 3com BAPI SERIAL I/O - READ CHARACTER
  8153.     AH = A3h
  8154.     DH = session ID (00h for external session managment)
  8155. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #00394)
  8156.     AL = character read or 00h if none available
  8157. SeeAlso: AH=A0h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AH=A7h"BAPI"
  8158. --------S-14A3-------------------------------
  8159. INT 14 - Interconnections Inc. TES - START A NEW SESSION
  8160.     AH = A3h
  8161.     ES:SI -> ???
  8162. Return: CF clear if successful
  8163.         AX = 5445h ('TE')
  8164.         CX <> FFFFh
  8165.         DX = port number
  8166.     CF set on error
  8167. SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
  8168. --------S-14A4-------------------------------
  8169. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  8170.     AH = A4h
  8171.     CX = length of buffer in bytes
  8172.     DH = session ID (00h for external session managment)
  8173.     ES:BX -> buffer containing data
  8174. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #00394)
  8175.     CX = number of bytes actually sent
  8176. SeeAlso: AH=19h,AH=86h,AH=A0h"BAPI",AH=A5h"BAPI"
  8177. --------S-14A4-------------------------------
  8178. INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
  8179.     AH = A4h
  8180.     ???
  8181. Return: ???
  8182. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  8183. --------S-14A5-------------------------------
  8184. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  8185.     AH = A5h
  8186.     CX = length of buffer
  8187.     DH = session ID (00h for external session managment)
  8188.     ES:BX -> buffer for data
  8189. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #00394)
  8190.     CX = number of bytes actually read
  8191. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  8192. SeeAlso: AH=A7h"BAPI",AX=FF02h
  8193. --------S-14A5-------------------------------
  8194. INT 14 - Interconnections Inc. TES - RESUME A SESSION
  8195.     AH = A5h
  8196.     AL = session number
  8197. Return: ???
  8198. SeeAlso: AH=A4h"TES",AH=A6h"TES"
  8199. --------S-14A6-------------------------------
  8200. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  8201.     AH = A6h
  8202.     DH = session ID (00h for external session managment)
  8203. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #00394)
  8204. Desc:    generate a short break signal; if data delivery was turned off by the
  8205.       break, wait for the host to turn it on again
  8206. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh,AH=A0h"BAPI"
  8207. --------S-14A6-------------------------------
  8208. INT 14 - Interconnections Inc. TES - DROP A SESSION
  8209.     AH = A6h
  8210.     AL = session number
  8211. Return: AH = status
  8212.         00h successful
  8213.         else error
  8214. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  8215. --------S-14A7-------------------------------
  8216. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  8217.     AH = A7h
  8218.     DH = session ID (00h for external session managment)
  8219. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #00394)
  8220.     CX = number of bytes available for reading
  8221. Note:    Novell TELAPI.EXE v4.01 always returns either 0 or 1 bytes available
  8222. SeeAlso: AH=A5h"BAPI"
  8223. --------S-14A7-------------------------------
  8224. INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
  8225.     AH = A7h
  8226.     ???
  8227. Return: ???
  8228. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  8229. --------S-14A8-------------------------------
  8230. INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
  8231.     AH = A8h
  8232.     AL = 00h no visible response
  8233.     ES:SI -> ASCIZ command
  8234. Return: ???
  8235. --------N-14A8-------------------------------
  8236. INT 14 - Novell TelAPI v4.01 - CONNECTION INFORMATION???
  8237.     AH = A8h
  8238.     DH = session ID???
  8239.     CH = subfunction
  8240.         02h ???
  8241.         0Dh ???
  8242.         0Fh ???
  8243.         10h ???
  8244.         11h ???
  8245.         28h ???
  8246.         else
  8247.         Return: AH = 09h (not supported)
  8248. Return: AH = return code (see #00394)
  8249.         00h successful
  8250.         CL = ??? (0/1/8) (subfunctions 02h,0Dh,0Fh,10h)
  8251.         CL = ??? (7Fh/FFh) (subfunction 28h)
  8252.         CX = ??? (subfunction 11h)
  8253. SeeAlso: AH=A9h"TelAPI"
  8254. --------N-14A9-------------------------------
  8255. INT 14 - Novell TelAPI v4.01 - CONNECTION CONTROL???
  8256.     AH = A9h
  8257.     DH = session ID???
  8258.     CH = subfunction
  8259.         02h ???
  8260.         0Dh ???
  8261.         0Fh ???
  8262.         10h ???
  8263.         11h ???
  8264.         28h ???
  8265.         else
  8266.         Return: AH = 09h (not supported)
  8267.     ???
  8268. Return: AH = return code (see #00394)
  8269.     ???
  8270. SeeAlso: AH=A8h"TelAPI",AH=E4h,INT 6B/AX=0600h
  8271. --------V-14AA01-----------------------------
  8272. INT 14 - DimVGA v2.0+ - INSTALLATION CHECK
  8273.     AX = AA01h
  8274. Return: AX = FFFFh if installed, unchanged
  8275.     BX = version (v1.5+ only), BH = major, BL = minor (v1.5 = 0105h)
  8276.     CX = resident segment (v3.1+)
  8277. Program: DimVGA is a public domain screen saver by Menno Pieters
  8278. SeeAlso: AX=AA02h,AX=AA03h,AX=AA06h,INT 11/AX=0225h/BX=6900h,INT 12"KEYBUI"
  8279. SeeAlso: INT 2D/AL=10h"Burnout Plus",INT 2F/AX=6400h,INT 2F/AH=93h
  8280. SeeAlso: INT 2F/AX=C000h"VGAsave",INT 2F/AX=C000h"AD-DOS",INT 2F/AX=C050h
  8281. SeeAlso: INT 2F/AX=E300h
  8282. Index:    screen saver;DimVGA
  8283. --------V-14AA02-----------------------------
  8284. INT 14 - DimVGA v2.0+ - SET TIME-OUT (DIMMING/BLANKING) PERIOD
  8285.     AX = AA02h
  8286.     BX = number of clock ticks
  8287. Return: AX = FFFFh
  8288. Note:    on screen modes with 256 or less colors DimVGA will dim the screen,
  8289.       when more than 256 colors can be used DimVGA will blank the screen.
  8290. SeeAlso: AX=AA01h,AX=AA03h,AX=AA04h,AX=AA06h
  8291. Index:    screen saver;DimVGA
  8292. --------V-14AA03-----------------------------
  8293. INT 14 - DimVGA v2.0+ - SET DIMMING FACTOR
  8294.     AX = AA03h
  8295.     BX = percentage remaining visible (1-99)
  8296. Return: AX = FFFFh
  8297. SeeAlso: AX=AA02h,AX=AA05h,AX=AA06h
  8298. Index:    screen saver;DimVGA
  8299. --------V-14AA04-----------------------------
  8300. INT 14 - DimVGA v2.0+ - GET TIME-OUT PERIOD
  8301.     AX = AA04h
  8302. Return: AX = FFFFh
  8303.     BX = current time-out in clock ticks
  8304. SeeAlso: AX=AA02h,AX=AA05h,AX=AA0Ah
  8305. Index:    screen saver;DimVGA
  8306. --------V-14AA05-----------------------------
  8307. INT 14 - DimVGA v2.0+ - GET DIMMING FACTOR
  8308.     AX = AA05h
  8309. Return: AX = FFFFh
  8310.     BX = current dimming factor
  8311. SeeAlso: AX=AA03h,AX=AA04h,AX=AA0Ah
  8312. Index:    screen saver;DimVGA
  8313. --------V-14AA06-----------------------------
  8314. INT 14 - DimVGA v2.0+ - DISABLE
  8315.     AX = AA06h
  8316. Return: AX = FFFFh
  8317. SeeAlso: AX=AA01h,AX=AA07h,AX=AA0Ah
  8318. Index:    screen saver;DimVGA
  8319. --------V-14AA07-----------------------------
  8320. INT 14 - DimVGA v2.0+ - ENABLE
  8321.     AX = AA07h
  8322. Return: AX = FFFFh
  8323. SeeAlso: AX=AA01h,AX=AA06h,AX=AA0Ah
  8324. Index:    screen saver;DimVGA
  8325. --------V-14AA08-----------------------------
  8326. INT 14 - DimVGA v2.0+ - DIM SCREEN 'MANUALLY'
  8327.     AX = AA08h
  8328. Return: AX = FFFFh
  8329. Note:    this function will dim the screen immediately, even if DimVGA is
  8330.       currently disabled
  8331. SeeAlso: AX=AA01h,AX=AA02h,AX=AA09h
  8332. Index:    screen saver;DimVGA
  8333. --------V-14AA09-----------------------------
  8334. INT 14 - DimVGA v2.0+ - UNDIM SCREEN 'MANUALLY'
  8335.     AX = AA09h
  8336. Return: AX = FFFFh
  8337. Note:    this function will undim the screen immediately, even if DimVGA is
  8338.       currently disabled
  8339. SeeAlso: AX=AA01h,AX=AA08h
  8340. Index:    screen saver;DimVGA
  8341. --------V-14AA0A-----------------------------
  8342. INT 14 - DimVGA v2.0+ - CHECK WHETHER ENABLED
  8343.     AX = AA0Ah
  8344. Return: AX = FFFFh
  8345.     BX = current state (0000h disabled, 0001h enabled)
  8346. SeeAlso: AX=AA01h,AX=AA06h,AX=AA07h
  8347. Index:    screen saver;DimVGA
  8348. --------V-14AA0B-----------------------------
  8349. INT 14 - DimVGA v2.1+ - SET HOTKEY
  8350.     AX = AA0Bh
  8351.     BH = shift state (see #00396)
  8352.     BL = keyboard scancode
  8353. Return: AX = FFFFh
  8354. SeeAlso: AX=AA01h,AX=AA0Ch
  8355. Index:    screen saver;DimVGA
  8356.  
  8357. Bitfields for DimVGA hotkey shift state:
  8358. Bit(s)    Description    (Table 00396)
  8359.  7-4    unused
  8360.  3    Alt key pressed
  8361.  2    Ctrl key pressed
  8362.  1    Left shift key pressed
  8363.  0    Right shift key pressed
  8364. --------V-14AA0C-----------------------------
  8365. INT 14 - DimVGA v2.1+ - GET HOTKEY
  8366.     AX = AA0Ch
  8367. Return: AX = FFFFh
  8368.     BH = shift state (see #00396)
  8369.     BL = keyboard scancode
  8370. SeeAlso: AX=AA01h,AX=AA0Bh
  8371. Index:    screen saver;DimVGA
  8372. --------V-14AA0D-----------------------------
  8373. INT 14 - DimVGA v3.0+ - SET MOUSE CHECK STATUS
  8374.     AX = AA0Dh
  8375.     BX = new mouse check status
  8376.         0000h mouse checking off
  8377.         0001h mouse checking on
  8378. Return: AX = FFFFh
  8379. Note:    before switching mouse checking on, a mouse driver should be
  8380.       found in memory. If no mouse driver is found, mouse checking
  8381.       should be switched off (resident DimVGA does not check by itself).
  8382. SeeAlso: AX=AA01h,AX=AA0Eh
  8383. Index:    screen saver;DimVGA
  8384. --------V-14AA0E-----------------------------
  8385. INT 14 - DimVGA v3.0+ - GET MOUSE CHECK STATUS
  8386.     AX = AA0Eh
  8387. Return: BX = mouse check status (0000h disabled, 0001h enabled)
  8388. SeeAlso: AX=AA01h,AX=AA0Dh
  8389. Index:    screen saver;DimVGA
  8390. --------V-14AA0F-----------------------------
  8391. INT 14 - DimVGA v3.4 - SET LOCKING STATUS
  8392.     AX = AA0Fh
  8393.     BX = locking status
  8394.         0000h disabled
  8395.         0001h enabled
  8396. Return: AX = FFFFh
  8397. SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA10h
  8398. Index:    screen saver;DimVGA
  8399. --------V-14AA10-----------------------------
  8400. INT 14 - DimVGA v3.4 - GET MOUSE CHECK STATUS
  8401.     AX = AA10h
  8402. Return: BX = locking status (0000h disabled, 0001h enabled)
  8403. SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA0Fh
  8404. Index:    screen saver;DimVGA
  8405. ----------14AD-------------------------------
  8406. INT 14 - IBM SurePath BIOS - Officially "Private" Function
  8407.     AH = ADh
  8408. SeeAlso: AH=AEh"IBM",AH=AFh"IBM"
  8409. ----------14AE-------------------------------
  8410. INT 14 - IBM SurePath BIOS - Officially "Private" Function
  8411.     AH = AEh
  8412. SeeAlso: AH=ADh"IBM",AH=AFh"IBM"
  8413. ----------14AF-------------------------------
  8414. INT 14 - IBM SurePath BIOS - Officially "Private" Function
  8415.     AH = AFh
  8416. SeeAlso: AH=ADh"IBM",AH=AEh"IBM"
  8417. --------S-14AF00BXAAAA-----------------------
  8418. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  8419.     AX = AF00h
  8420.     BX = AAAAh
  8421. Return: AX = AF01h if installed
  8422.         BH = protocol type (if BX=AAAAh on entry)
  8423.         01h NetManage TCP/IP
  8424.         BL = version for protocol type (if BX=AAAAh on entry)
  8425. Note:    early versions of the BAPI and the ROM BIOS simply destroy AX; this
  8426.       behavior is used to determine whether the newer functions (AH=B0h,
  8427.       AH=B1h,etc) are available
  8428. SeeAlso: AH=A0h"BAPI"
  8429. --------S-14B0-------------------------------
  8430. INT 14 - 3com BAPI SERIAL I/O - EN/DISABLE "ENTER COMMAND MODE" (ECM) CHARACTER
  8431.     AH = B0h
  8432.     AL = new state (00h disabled, 01h enabled)
  8433. Return: AH = return code (00h,07h,0Ah) (see #00394)
  8434. Note:    disabling the ECM character allows applications to send data which
  8435.       includes the ECM character
  8436. SeeAlso: AX=AF00h"BAPI",AH=B1h,AH=B2h
  8437. --------S-14B1-------------------------------
  8438. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  8439.     AH = B1h
  8440. Return: AH = return code (00h,07h,0Ah) (see #00394)
  8441. Desc:    provide a means for the application or terminal emulator to perform
  8442.       the same action normally caused by the ECM character
  8443. SeeAlso: AH=B0h,AH=B2h
  8444. --------S-14B2-------------------------------
  8445. INT 14 - 3com BAPI SERIAL I/O - GET ECM WATCH STATE
  8446.     AH = B2h
  8447. Return: AH = return code (00h,07h,0Ah) (see #00394)
  8448.     AL = watch flag (00h disabled, 01h enabled)
  8449. Desc:    determine whether the ECM character is enabled
  8450. SeeAlso: AH=B0h,AH=B1h
  8451. --------S-14B3-------------------------------
  8452. INT 14 - 3com BAPI SERIAL I/O - GET/SET CONFIGURATION INFO
  8453.     AH = B3h
  8454.     AL = direction (00h get, 01h set)
  8455.     DH = session ID (00h for external session managment)
  8456.     DL = configuration item (00h = end-of-line mapping)
  8457.     CX = new configuration item value (if AL=01h)
  8458.         ---if DL=00h---
  8459.         CH = application EOL type (app to Telnet client)
  8460.         01h application will send lone CR
  8461.         02h application will send CR-? pair
  8462.         CL = driver EOL type (Telnet client to Telnet server)
  8463.         01h driver should send CR-NUL pair
  8464.         02h driver should send CR-LF pair
  8465. Return: AH = return code (00h,03h,09h-0Bh) (see #00394)
  8466.     ---if AL=00h---
  8467.     CX = configuration item value (above)
  8468. SeeAlso: AH=B2h
  8469. --------N-14E0-------------------------------
  8470. INT 14 - TelAPI - "telopen" - CREATE TELNET CONNECTION (BLOCKING)
  8471.     AH = E0h
  8472.     BX = port number to connect with (default 0017h used if <= 0)
  8473.     CX:DX = Internet address of remote host
  8474.     DS:DI -> 2-byte remote host (session) identifier
  8475.     ES:SI -> 1700-byte buffer for Telnet state record
  8476.         0000h:0000h to use TelAPI internally-allocated space
  8477. Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #00397)
  8478.     ES:SI buffer filled with state record
  8479.     ES:SI -> internally-allocated state record in some versions
  8480. Note:    the remote host identifier may be used to refer to this connection
  8481. SeeAlso: AH=E1h,AH=ECh,AX=FF00h
  8482.  
  8483. (Table 00397)
  8484. Values for TelAPI status:
  8485.  0000h-7FFFh    successful (session number)
  8486.  FED3h    (-301)    no session allocated, or out of TelAPI data space
  8487.  FF37h    (-201)    all sessions in use
  8488.  FFBDh    (-67)    unknown hostname
  8489.  FFC0h    (-64)    host not functioning
  8490.  FFC3h    (-61)    connection attempt refused
  8491.  FFC4h    (-60)    connection attempt timed out
  8492.  FFC8h    (-56)    socket already connected
  8493.  FFCDh    (-51)    network is unreachable
  8494.  FFDDh    (-35)    operation would block
  8495. --------S-14E000-----------------------------
  8496. INT 14 - MX5 Extended FOSSIL - GET MNP STATUS BLOCK
  8497.     AX = E000h
  8498.     DX = port number (0-3)
  8499. Return: ES:BX -> status block (see #00398)
  8500. Program: MX5 is a FOSSIL driver by MagicSoft which emulates MNP Level 5, and
  8501.       ships with the METZ terminal program as MTEMNP.DRV (a TSR despite
  8502.       the .DRV extension)
  8503. SeeAlso: AX=E006h
  8504.  
  8505. Format of MX5 Extended FOSSIL status block:
  8506. Offset    Size    Description    (Table 00398)
  8507.  00h    BYTE    flag: active (00h no, 01h yes)
  8508.  01h    BYTE    MNP level (2,4,5)
  8509.  02h    BYTE    series ID from remote MNP
  8510.  03h    DWORD    total packets transmitted
  8511.  07h    DWORD    duplicate packets transmitted
  8512.  0Bh    DWORD    maximum speed
  8513.  0Fh    DWORD    total packets received
  8514.  13h    DWORD    duplicate packets received
  8515.  17h    DWORD    maximum speed
  8516. --------S-14E001-----------------------------
  8517. INT 14 - MX5 Extended FOSSIL - GET/SET MNP LEVEL
  8518.     AX = E001h
  8519.     BH = function
  8520.         00h get MNP level
  8521.         01h set MNP level
  8522.         BL = new level (00h none, 02h/04h/05h MNP level N)
  8523.     DX = port number (0-3)
  8524. Return: BL = MNP level
  8525. SeeAlso: AX=E002h,AX=E003h,AX=E004h,AX=E006h
  8526. --------S-14E002-----------------------------
  8527. INT 14 - MX5 Extended FOSSIL - GET/SET MNP ANSWER/ORIGINATE MODE
  8528.     AX = E002h
  8529.     BH = function
  8530.         00h get answer/originate mode
  8531.         01h set mode
  8532.         BL = new mode (00h originate [default], 01h answer)
  8533.     DX = port number (0-3)
  8534. Return: BL = answer/originate mode
  8535. SeeAlso: AX=E001h,AX=E003h,AX=E006h
  8536. --------S-14E003-----------------------------
  8537. INT 14 - MX5 Extended FOSSIL - GET/SET MNP WAIT TICKS
  8538.     AX = E003h
  8539.     BH = function
  8540.         00h get wait ticks
  8541.         01h set wait ticks
  8542.         BL = MNP wait ticks (default 0Eh)
  8543.     DX = port number (0-3)
  8544. Return: BL = wait ticks
  8545. SeeAlso: AX=E001h,AX=E002h,AX=E006h
  8546. --------S-14E004-----------------------------
  8547. INT 14 - MX5 Extended FOSSIL - GET/SET MNP CONNECT SOUND LEVEL
  8548.     AX = E004h
  8549.     BH = function
  8550.         00h get sound level
  8551.         01h set sound level
  8552.         BL = new sound level (00h off, 01h on [default])
  8553.     DX = port number
  8554. Return: BL = sound state
  8555. Desc:    specify whether MX5 should generate beeps after an MNP connection
  8556.       (three high beeps if successful, high then low on connection failure)
  8557. SeeAlso: AX=E002h,AX=E006h
  8558. --------S-14E005-----------------------------
  8559. INT 14 - MX5 Extended FOSSIL - UNINSTALL
  8560.     AX = E005h
  8561. Return: BX = segment of MX5's memory block or 0000h on failure
  8562. Note:    caller must free the returned memory block to complete the uninstall
  8563. SeeAlso: AX=E006h
  8564. --------S-14E006BX0000-----------------------
  8565. INT 14 - MX5 Extended FOSSIL - INSTALLATION CHECK
  8566.     AX = E006h
  8567.     BX = 0000h
  8568. Return: BX = 4D58h ('MX') if installed
  8569.         AH = major version
  8570.         AL = minor version
  8571. SeeAlso: AX=E000h,AX=E001h,AX=E005h,AX=E007h
  8572. --------S-14E007-----------------------------
  8573. INT 14 - MX5 Extended FOSSIL - WAIT SPECIFIED NUMBER OF TICKS
  8574.     AX = E007h
  8575.     CX = number of ticks to wait
  8576. Return: nothing
  8577. SeeAlso: AX=E006h
  8578. --------N-14E1-------------------------------
  8579. INT 14 - TelAPI - "telclose" - TERMINATE TELNET CONNECTION
  8580.     AH = E1h
  8581.     BX = connection ID
  8582. Return: AX = status (0000h,FFF7h,maybe others) (see #00397)
  8583. Note:    flushes and releases all buffers and data space used by the connection
  8584. SeeAlso: AH=E0h,AH=E6h,AX=FF00h
  8585. --------N-14E2-------------------------------
  8586. INT 14 - TelAPI - "telread" - BUFFERED READ
  8587.     AH = E2h
  8588.     BX = connection ID (see AH=E0h"TelAPI")
  8589.     CX = length of buffer in bytes
  8590.     ES:SI -> buffer for data
  8591. Return: AX > 0000h number of characters actually read
  8592.     AX = 0000h host has closed connection
  8593.     AX < 0000h error code (see #00397)
  8594. Note:    translates CRLF into local EOL if the connection is in ASCII mode,
  8595.       negotiates various Telnet options, and immediately executes several
  8596.       different Telnet action commands
  8597. SeeAlso: AH=07h"TelAPI",AH=E3h,AH=E6h,AX=FF00h,INT 6B/AH=01h
  8598. --------N-14E3-------------------------------
  8599. INT 14 - TelAPI - "telwrite" - BUFFERED WRITE
  8600.     AH = E3h
  8601.     BX = connection ID
  8602.     CX = length of buffer in bytes
  8603.     ES:SI -> buffer containing data
  8604. Return: AX > 0000h number of characters actually written
  8605.     AX < 0000h error code (see #00397)
  8606. Note:    translates local EOL into CRLF if the connection is in ASCII mode,
  8607.       sends the appropriate Telnet commands for the characters selected
  8608.       for IP, AYT, AO, EC, EL, and Break
  8609. SeeAlso: AH=06h"TelAPI",AH=E2h,AH=E6h,AX=FF00h,INT 6B/AH=00h
  8610. --------N-14E4-------------------------------
  8611. INT 14 - TelAPI - "telioctl" - CONNECTION CONTROL
  8612.     AH = E4h
  8613.     BX = connection ID (see AH=E0h"TelAPI")
  8614.     CX = Telnet command/option identifier (see #00400)
  8615.     ES:SI -> buffer containing command/option argument (see #00399)
  8616. Return: AX = status (0000h, etc.) (see #00397)
  8617. Desc:    start filter control, initiate Telnet option negotiation, or get filter
  8618.       control status
  8619. SeeAlso: AH=A9h,AH=E6h,AX=FF00h,INT 6B/AX=0600h
  8620.  
  8621. Format of TelAPI Telnet command/option argument:
  8622. Offset    Size    Description    (Table 00399)
  8623.  00h  5 WORD    numeric arguments
  8624.  0Ah    DWORD    -> ASCIZ string
  8625. SeeAlso: #00400
  8626.  
  8627. (Table 00400)
  8628. Values for TelAPI Telnet command/option identifier:
  8629.  01h    ASCII        args: none
  8630.  02h    BINARY        args: none
  8631.  03h    LOCALECHO    args: none        client echos data
  8632.  04h    REMOTEECHO    args: none        server echos data
  8633.  05h    SGA        args: none        Suppress Go-Ahead signal
  8634.  07h    CHARMODE    args: none        no line-buffering
  8635.  08h    LINEMODE    args: -> erase-line ch    perform line-buffering
  8636.  09h    RECVEOL        args: EOL type
  8637.  0Ah    SENDEOL        args: EOL type
  8638.  0Bh    EOR        args: none        enable end-of-record sequence
  8639.  0Dh    BREAK        args: -> break char
  8640.  0Eh    VERBOSE        args: verbosity        display Telnet negotiations?
  8641.  0Fh    AYT        args: -> AYT escape ch
  8642.  10h    AO        args: -> AO escape char
  8643.  11h    IP        args: -> IP escape char
  8644.  12h    EC        args: -> escape char
  8645.  13h    EL        args: -> escape char
  8646.  14h    STATUS        args: type; returns data in structure
  8647.  18h    TERMTYPE    args: -> terminal type
  8648.  19h    ATTACHPORT    args: port number ; returns session number
  8649.  1Bh    TRANSMIT_EOR    args: EOR enabled    append EOR to every telwrite?
  8650. SeeAlso: #00399
  8651. --------N-14E5-------------------------------
  8652. INT 14 - TelAPI - "telreset" - RESET ALL CONNECTIONS
  8653.     AH = E5h
  8654. Return: AX = status (0000h,other) (see also #00397)
  8655.         FFFFh unable to reset
  8656. Desc:    close all sessions and reset TelAPI to defaults
  8657. SeeAlso: AH=E1h,AH=E6h,AX=FF00h
  8658. --------N-14E6-------------------------------
  8659. INT 14 - TelAPI - "telunload" - UNINSTALL
  8660.     AH = E6h
  8661. Return: AX = status
  8662.         0000h successful
  8663.         FFFFh unable to uninstall
  8664. Notes:    TelAPI also supports the NASI/NACS and NCSI APIs on INT 6B
  8665.     this function invokes AH=E5h internally
  8666. SeeAlso: AH=E5h,AX=FF00h,INT 6B/AH=00h,INT 6B/AH=10h
  8667. --------N-14E7-------------------------------
  8668. INT 14 - TelAPI - "tellist" - GET TELNET SESSION LIST
  8669.     AH = E7h
  8670.     ES:SI -> 10-word buffer for session list
  8671. Return: AX = 0000h (successful)
  8672.     ES:SI buffer filled
  8673. Desc:    determine, for each of the ten allowable sessions, whether the session
  8674.       is currently available
  8675. Note:    each word in the buffer is filled with either 0000h to indicate that
  8676.      the corresponding sesion is unavailable, or 0001h if available
  8677. SeeAlso: AH=E0h,AH=E5h,AX=FF00h
  8678. --------N-14E8-------------------------------
  8679. INT 14 - TelAPI - "telattach" - ATTACH COM PORT TO/FROM TELNET SESSION
  8680.     AH = E8h
  8681.     BX = connection ID (see AH=E0h"TelAPI")
  8682.     CX = serial port number (0000h-0003h = COM1-COM4)
  8683. Return: AX = status
  8684.         0000h successful
  8685.         FFFFh failed
  8686. SeeAlso: AH=E0h,AH=E9h,AX=FF00h
  8687. --------N-14E9-------------------------------
  8688. INT 14 - TelAPI - "telportosn" - GET SESSION NUMBER FOR COM PORT
  8689.     AH = E9h
  8690.     DX = serial port number (0000h-0003h = COM1-COM4)
  8691. Return: AX >= 0000h session number
  8692.     AX < 0000h error code (see #00397)
  8693. SeeAlso: AH=E0h,AH=E8h,AH=EAh,AX=FF00h
  8694. --------N-14EA-------------------------------
  8695. INT 14 - TelAPI - "telstatus" - GET TELNET CONNECTION STATUS INFORMATION
  8696.     AH = EAh
  8697.     BX = connection ID (see AH=E0h"TelAPI")
  8698.     ES:SI -> buffer for status info (see #00401)
  8699. Return: AX = status (0000h,FFFFh,etc.)
  8700. SeeAlso: AH=E9h,AH=EBh,AX=FF00h
  8701.  
  8702. Format of TelAPI Telnet connection status information:
  8703. Offset    Size    Description    (Table 00401)
  8704.  00h  4 BYTEs    remote host IP address
  8705.  04h 20 BYTEs    reserved
  8706.  18h    WORD    local port number
  8707.  1Ah    BYTE    connection mode (00h = ASCII, 01h = Binary)
  8708.  1Bh    BYTE    echo flag (00h local, 01h remote)
  8709.  1Ch    BYTE    SGA flag (00h will, 01h won't)
  8710.  1Dh    BYTE    EOR negotation flag (00h do negotiate, 01h don't)
  8711.  1Eh    BYTE    buffering (00h line mode, 01h character mode)
  8712.  1Fh    BYTE    reserved
  8713.  20h    BYTE    verbose flag (00h no, 01h verbose mode)
  8714.  21h    BYTE    received EOL (00h no xlat, 01h CR, 02h LF, 03h CRLF)
  8715.  22h    BYTE    sent EOL (00h no translation, 01h CR, 02h LF)
  8716.  23h    BYTE    break character
  8717.  24h    BYTE    IP escape character
  8718.  25h    BYTE    AO escape character
  8719.  26h    BYTE    AYT escape character
  8720.  27h    BYTE    EC escape character
  8721.  28h    BYTE    EL escape character
  8722.  29h 41 BYTEs    ASCIZ Telnet-negotiated terminal type
  8723.  52h  9 BYTEs    session ID
  8724. SeeAlso: #00402
  8725. --------N-14EB-------------------------------
  8726. INT 14 - TelAPI - "telname" - GET AVAILABLE/INUSE STATUS FOR ALL SESSIONS
  8727.     AH = EBh
  8728.     ES:SI -> buffer for session statuses (see #00402)
  8729. Return: ES:SI buffer filled
  8730. SeeAlso: AH=E9h,AH=EAh,AX=FF00h
  8731.  
  8732. Format of TelAPI session status information [array]:
  8733. Offset    Size    Description    (Table 00402)
  8734.  00h    BYTE    session state (00h available, 01h connected)
  8735.  01h  9 BYTEs    session ID if connected
  8736.  0Ah    WORD    attached COM port if connected, FFFFh if not
  8737. SeeAlso: #00401
  8738. --------N-14EC-------------------------------
  8739. INT 14 - TelAPI - "telnblkopen" - CREATE TELNET CONNECTION (NON-BLOCKING)
  8740.     AH = ECh
  8741.     BX = port number to connect with (default 0017h used if <= 0)
  8742.     CX:DX = Internet address of remote host
  8743.     DS:DI -> 2-byte remote host (connection) identifier
  8744.     ES:SI -> 1700-byte buffer for Telnet state record
  8745.         0000h:0000h to use TelAPI internally-allocated space
  8746. Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #00397)
  8747.     ES:SI buffer filled with state record
  8748.     ES:SI -> internally-allocated state record in some versions
  8749. Notes:    the remote host identifier may be used to refer to this connection
  8750.     this function returns immediately; use AH=EDh to check whether the
  8751.       connection has been established yet
  8752.     this function is not supported by the Microdyne TelAPI v3.7
  8753. SeeAlso: AH=E0h"TelAPI",AH=EDh,AX=FF00h
  8754. --------N-14ED-------------------------------
  8755. INT 14 - TelAPI - "telpoll" - POLL TELNET SESSION FOR CONNECTION COMPLETION
  8756.     AH = EDh
  8757.     BX = connection ID (see AH=ECh)
  8758. Return: AX = status (0000h,0001h,FFFFh,etc.) (see also #00397)
  8759.         0000h session now connected
  8760.         0001h connection still in progress
  8761. Note:    this function is not supported by the Microdyne TelAPI v3.7
  8762. SeeAlso: AH=EDh,AX=FF00h
  8763. --------a-14F0F0-----------------------------
  8764. INT 14 - ASAP v1.0 - ???
  8765.     AX = F0F0h
  8766.     DX = ???
  8767.     ???
  8768. Return: ???
  8769. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader
  8770.       by MicroTalk
  8771. SeeAlso: AX=F0F1h
  8772. --------a-14F0F1DX0000-----------------------
  8773. INT 14 - ASAP v1.0 - INSTALLATION CHECK
  8774.     AX = F0F1h
  8775.     DX = 0000h
  8776. Return: DX = segment of resident code
  8777.         0000h if not installed
  8778. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader
  8779.       by MicroTalk
  8780. SeeAlso: AX=F0F0h,INT 10/AX=3800h
  8781. --------S-14F4FF-----------------------------
  8782. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  8783.     AX = F4FFh
  8784.     DX = port (00h-03h)
  8785. Return: CF clear if present
  8786.         AX = 0000h
  8787.     CF set if not present
  8788.         AX <> 0000h
  8789. SeeAlso: AH=36h"ComShare",AH=F9h,AH=FCh
  8790. --------S-14F9-------------------------------
  8791. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  8792.     AH = F9h
  8793.     DX = port (00h-03h)
  8794. Return: nothing
  8795. SeeAlso: AX=F4FFh
  8796. --------S-14FA-------------------------------
  8797. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  8798.     AH = FAh
  8799.     DX = port (00h-03h)
  8800. Return: nothing
  8801. SeeAlso: AH=07h"MBBIOS",AH=1Ah,AH=8Ah
  8802. --------S-14FB-------------------------------
  8803. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  8804.     AH = FBh
  8805.     AL = modem control register (see #00334 at AH=05h"SERIAL")
  8806.     DX = port (00h-03h)
  8807. Return: nothing
  8808. SeeAlso: AH=05h"SERIAL"
  8809. --------S-14FC-------------------------------
  8810. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  8811.     AH = FCh
  8812.     DX = port (00h-03h)
  8813. Return: AH = RS232 status bits (see #00304 at AH=03h)
  8814.     AL = character
  8815. SeeAlso: AH=02h,AH=0Ch,AX=FF02h
  8816. --------S-14FD02-----------------------------
  8817. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  8818.     AX = FD02h
  8819. Return: CX = number of characters available
  8820. --------N-14FF00-----------------------------
  8821. INT 14 - TelAPI - "telcheck" - INSTALLATION CHECK
  8822.     AX = FF00h
  8823. Return: AX = 00FFh if installed
  8824.         BX = version number * 100 (decimal)
  8825. SeeAlso: AH=E6h,AX=F4FFh
  8826. --------S-14FF01-----------------------------
  8827. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET SEND BUFFER
  8828.     AX = FF01h
  8829.     CX = length of buffer (0000h to cancel buffer assignment)
  8830.     DX = port (00h-03h)
  8831.     ES:BX -> send buffer
  8832. Return: nothing
  8833. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF02h
  8834. --------S-14FF02-----------------------------
  8835. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET RECEIVE BUFFER
  8836.     AX = FF02h
  8837.     CX = length of buffer (0000h to cancel buffer assignment)
  8838.     DX = port (00h-03h)
  8839.     ES:BX -> receive buffer
  8840. Return: nothing
  8841. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF01h
  8842. --------S-14FFF8-----------------------------
  8843. INT 14 - COMM-DRV v14.0 - SET BAUD RATE DIVISOR
  8844.     AX = FFF8h
  8845.     BX = card type (sub-device number)
  8846.     CX = new baudrate divisor
  8847.     DX = index to baud rate
  8848. Return: AH bit 7 set on error
  8849.     AH bit 7 clear if successful
  8850. Program: COMM-DRV is a universal serial communications driver by Willies'
  8851.       Computer Software Company, which supports standard INT 14 and
  8852.       FOSSIL calls as well as its own interfaces
  8853. SeeAlso: AX=8000h"COMM-DRV"
  8854. --------S-14FFFB-----------------------------
  8855. INT 14 - COMM-DRV v14.0 - GET HIGHEST ALLOWED PORT NUMBER
  8856.     AX = FFFBh
  8857.     DX = port number
  8858. Return: AH bit 7 set on error
  8859.     AH bit 7 clear if successful
  8860.         BX = highest port number
  8861. --------S-14FFFC-----------------------------
  8862. INT 14 - COMM-DRV v14.0 - GET INT 14 FLAGS
  8863.     AX = FFFCh
  8864.     DX = port number
  8865. Return: AH bit 7 set on error
  8866.     AH bit 7 clear if successful
  8867.         BX = flags (see #00403)
  8868. SeeAlso: AX=FFFDh
  8869.  
  8870. Bitfields for INT 14h flags:
  8871. Bit(s)    Description    (Table 00403)
  8872.  0    port active for INT 14h
  8873.  1    interface behaving like a FOSSIL driver
  8874. --------S-14FFFD-----------------------------
  8875. INT 14 - COMM-DRV v14.0 - SET INT 14 FLAGS
  8876.     AX = FFFDh
  8877.     BX = flags (see #00403)
  8878.     DX = port number
  8879. Return: AH bit 7 set on error
  8880.     AH bit 7 clear if successful
  8881. SeeAlso: AX=FFFCh
  8882. --------S-14FFFE-----------------------------
  8883. INT 14 - COMM-DRV v14.0 - RESTORE INT 14 VECTOR TO ORIGINAL
  8884.     AX = FFFEh
  8885. Return: AH bit 7 set on error
  8886.     AH bit 7 clear if successful
  8887. --------S-14FFFF-----------------------------
  8888. INT 14 - COMM-DRV v14.0 - GET INT 14 INFORMATION AREA
  8889.     AX = FFFFh
  8890.     BX:SI -> DWORD buffer for address of information area (see #00404)
  8891.           (initialized to zeros)
  8892. Return: BX:SI buffer filled with nonzero value if installed
  8893. Program: COMM-DRV is a universal serial communications driver by Willies'
  8894.       Computer Software Company, which supports standard INT 14 and
  8895.       FOSSIL calls as well as its own interfaces
  8896. Index:    installation check;COMM-DRV
  8897.  
  8898. Format of COMM-DRV information area:
  8899. Offset    Size    Description    (Table 00404)
  8900.  00h  8 BYTEs    signature "COMM-DRV"
  8901.  08h  2 BYTEs    00h,00h
  8902.  0Ah    DWORD    -> direct address mapping table
  8903.  0Eh    DWORD    previous INT 14 vector
  8904. --------t-15---------------------------------
  8905. INT 15 - Microsoft TSR Specification
  8906.     No additional information available at this time.
  8907. --------B-1500-------------------------------
  8908. INT 15 - CASSETTE - TURN ON TAPE DRIVE'S MOTOR (PC and PCjr only)
  8909.     AH = 00h
  8910. Return: CF set on error
  8911.         AH = 86h no cassette present
  8912.     CF clear if successful
  8913. SeeAlso: AH=01h"CASSETTE",MEM 0040h:0067h"PC"
  8914. --------M-1500-------------------------------
  8915. INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS
  8916.     AH = 00h
  8917. Return: CX = signed X count
  8918.     DX = signed Y count
  8919. --------O-1500-------------------------------
  8920. INT 15 - VMiX v2+ - INSTALLATION CHECK
  8921.     AH = 00h
  8922. Return: DX = 0798h if installed
  8923.         AX = version (AH = major, AL = minor)
  8924. --------T-1500-------------------------------
  8925. INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
  8926.     AH = 00h
  8927. Return: nothing
  8928. Note:    if issued by the highest-priority task while MultiDOS is using
  8929.       priority-based rather than round-robin scheduling, control will be
  8930.       returned to the caller immediately
  8931. SeeAlso: AH=03h"MultiDOS",AX=1000h
  8932. --------B-1501-------------------------------
  8933. INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only)
  8934.     AH = 01h
  8935. Return: CF set on error
  8936.         AH = 86h no cassette present
  8937.     CF clear if successful
  8938. SeeAlso: AH=00h"CASSETTE"
  8939. --------b-1501-------------------------------
  8940. INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
  8941.     AH = 01h
  8942.     AL = NVRAM location (00h to 3Fh) (see #00405)
  8943.     BL = NVRAM data value
  8944. Return: AH = return code
  8945.         00h OK
  8946.         01h address bad
  8947.         02h write error
  8948. SeeAlso: AH=02h"Amstrad"
  8949.  
  8950. Format of Amstrad NVRAM:
  8951. Offset    Size    Description    (Table 00405)
  8952.  00h    BYTE    time of day: seconds
  8953.  01h    BYTE    alarm time: seconds
  8954.  02h    BYTE    time of day: minutes
  8955.  03h    BYTE    alarm time: minutes
  8956.  04h    BYTE    time of day: hours
  8957.  05h    BYTE    alarm time: hours
  8958.  06h    BYTE    day of week, 1 = Sunday
  8959.  07h    BYTE    day of month
  8960.  08h    BYTE    month
  8961.  09h    BYTE    year mod 100
  8962.  0Ah    BYTE    RTC status register A (see #00406)
  8963.  0Bh    BYTE    RTC status register B (see #00407)
  8964.  0Ch    BYTE    RTC status register C (read-only) (see #00408)
  8965.  0Dh    BYTE    RTC status register D
  8966.         bit 7: battery good
  8967.  0Eh  6 BYTEs    time and date machine last used
  8968.  14h    BYTE    user RAM checksum
  8969.  15h    WORD    Enter key scancode/ASCII code
  8970.  17h    WORD    Forward delete key scancode/ASCII code
  8971.  19h    WORD    Joystick fire button 1 scancode/ASCII code
  8972.  1Bh    WORD    Joystick fire button 2 scancode/ASCII code
  8973.  1Dh    WORD    mouse button 1 scancode/ASCII code
  8974.  1Fh    WORD    mouse button 2 scancode/ASCII code
  8975.  21h    BYTE    mouse X scaling factor
  8976.  22h    BYTE    mouse Y scaling factor
  8977.  23h    BYTE    initial VDU mode and drive count
  8978.  24h    BYTE    initial VDU character attribute
  8979.  25h    BYTE    size of RAM disk in 2K blocks
  8980.  26h    BYTE    initial system UART setup byte
  8981.  27h    BYTE    initial external UART setup byte
  8982.  28h 24 BYTEs    available for user application
  8983. Note:    bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
  8984.       the clock chip
  8985.  
  8986. Bitfields for RTC status register A:
  8987. Bit(s)    Description    (Table 00406)
  8988.  7    set if date/time being updated
  8989.  6-4    time base speed, default 010 = 32768 Hz
  8990.  3-0    interrupt rate selection, default 0110 = 1024 Hz
  8991. SeeAlso: #00405
  8992.  
  8993. Bitfields for RTC status register B:
  8994. Bit(s)    Description    (Table 00407)
  8995.  7    clear if normal update, set if abort update
  8996.  6    periodic interrupt enable
  8997.  5    alarm interrupt enable
  8998.  4    update end interrupt enable
  8999.  3    square wave enable
  9000.  2    date mode (clear = BCD, set = binary)
  9001.  1    24-hour format
  9002.  0    daylight saving time enable
  9003. SeeAlso: #00405
  9004.  
  9005. Bitfields for RTC status register C:
  9006. Bit(s)    Description    (Table 00408)
  9007.  7    IRQF flag
  9008.  6    PF flag
  9009.  5    AF flag
  9010.  4    UF flag
  9011. SeeAlso: #00405
  9012. --------O-1501-------------------------------
  9013. INT 15 - VMiX - "sys_chanreq" - I/O CHANNEL OBJECT MANAGER
  9014.     AH = 01h
  9015.     STACK:    WORD    object ID of requestor
  9016.         DWORD    pointer to ASCIZ name of requested method
  9017.             "assign" assign channel to object
  9018.             "deassign" deassign channel
  9019.             "cursor" set cursor on/off
  9020.             "init" initialize comm port
  9021.             "open" open I/O channel
  9022.             "position" set cursor position
  9023.             "receive" get buffered packet from comm port
  9024.             "send" send buffered packet to comm port
  9025.             "vio" set current virtual I/O to specified channel
  9026.             "window" make window at cursor position
  9027.         ---if "assign"---
  9028.          WORD    object UID
  9029.          WORD    caller UID/PID
  9030.          DWORD    CSL with port
  9031.         ---if "deassign"---
  9032.          WORD    channel ID
  9033.         ---if "cursor"---
  9034.          WORD    channel ID (must be a SRCSINK)
  9035.          WORD    new state (0000h off, 0001h on)
  9036.         ---if "init"---
  9037.          WORD    channel ID (must be a SRCSINK)
  9038.          WORD    comm port number (00h-03h)
  9039.          WORD    UART init code
  9040.         ---if "open"---
  9041.          WORD    channel ID
  9042.         ---if "position"---
  9043.          WORD    channel ID (must be a SRCSINK)
  9044.          WORD    position (high byte = row, low byte = column)
  9045.         ---if "receive"---
  9046.          DWORD    pointer to buffer
  9047.         ---if "send"---
  9048.          WORD    length of buffer
  9049.          DWORD    pointer to buffer
  9050.         ---if "vio"---
  9051.          WORD    channel ID (must be a SRCSINK)
  9052.         ---if "window"---
  9053.          WORD    top left (high byte = row, low byte = column)
  9054.          WORD    bottom right (high byte = row, low byte = column)
  9055. Return: DX:AX -> IRP structure or 0000h:0000h
  9056. SeeAlso: AH=00h"VMiX",AH=02h"VMiX"
  9057. --------T-1501-------------------------------
  9058. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
  9059.     AH = 01h
  9060.     AL = semaphore number (00h-3Fh)
  9061. Return: AH = status
  9062.         00h successful
  9063.         02h invalid semaphore number
  9064. Notes:    if the semaphore is not owned, ownership is assigned to the calling
  9065.       task and the call returns immediately
  9066.     if the semaphore is already owned by another task, the calling task
  9067.       is placed on a queue for the semaphore and suspended until it can
  9068.       become owner of the semaphore
  9069.     semaphore 0 is used internally by MultiDOS to synchronize DOS access
  9070. SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS"
  9071. --------B-1502-------------------------------
  9072. INT 15 - CASSETTE - READ DATA (PC and PCjr only)
  9073.     AH = 02h
  9074.     CX = number of bytes to read
  9075.     ES:BX -> buffer
  9076. Return: CF clear if successful
  9077.         DX = number of bytes read
  9078.         ES:BX -> byte following last byte read
  9079.     CF set on error
  9080.     AH = status (see #00409)
  9081. SeeAlso: AH=00h"CASSETTE",AH=03h"CASSETTE",MEM 0040h:0069h,MEM 0040h:006Bh"PC"
  9082.  
  9083. (Table 00409)
  9084. Values for Cassette status:
  9085.  00h    successful
  9086.  01h    CRC error
  9087.  02h    bad tape signals
  9088.  04h    no data
  9089.  80h    invalid command
  9090.  86h    no cassette present
  9091. --------b-1502-------------------------------
  9092. INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
  9093.     AH = 02h
  9094.     AL = NVRAM location (00h to 3Fh)
  9095. Return: AH = return code
  9096.         00h OK
  9097.         01h address bad
  9098.         02h checksum error
  9099.     AL = NVRAM data value
  9100. SeeAlso: AH=01h"Amstrad"
  9101. --------O-1502-------------------------------
  9102. INT 15 - VMiX - "sys_memreq" - MEMORY OBJECT MANAGER
  9103.     AH = 02h
  9104.     STACK:    WORD    object ID of requestor
  9105.         DWORD    pointer to ASCIZ name of requested method
  9106.             "assign" allocate low memory block
  9107.             "assign extended" allocate extended memory pages
  9108.             "assign gdt" allocate GDT selector
  9109.             "paged" allocate low paged memory
  9110.             "paged extended" alllocate extended memory pages
  9111.             "deassign" free memory block
  9112.             "deassign gdt" free GDT selector
  9113.             "getvpage" get physical address for virtual page
  9114.             "setvpage" set physical address for virtual page
  9115.             "info" get VMiX memory usage info block
  9116.             "move" move contents of 32-bit memory
  9117.             "newmcb" make new DOS memory control block
  9118.             "owner" get process ID of MCB or PSP owner
  9119.             "umb" allocate upper memory block
  9120.             "video" toggle system use of video memory and get stat
  9121.         ---if "assign"---
  9122.          WORD    number of objects
  9123.          WORD    size in bytes (multiple of 512 bytes)
  9124.         ---if "assign extended"---
  9125.          WORD    number of objects
  9126.          WORD    size in bytes (multiple of 4K)
  9127.         ---if "assign gdt"---
  9128.          WORD    access type (low byte)
  9129.          WORD    segment size in paragraphs
  9130.          DWORD    pointer to start of physical segment
  9131.         ---if "paged"---
  9132.          WORD    number of 512-byte pages
  9133.         ---if "paged extended"
  9134.          WORD    number of 4K pages
  9135.         ---if "deassign"---
  9136.          DWORD    pointer returned by previous allocation call
  9137.         ---if "deassign gdt"---
  9138.          WORD    GDT selector
  9139.         ---if "getvpage"---
  9140.          WORD    owner's process ID
  9141.          DWORD    pointer to buffer for page structure (struct VPGE)
  9142.         ---if "setvpage"---
  9143.          WORD    owner's process ID
  9144.          DWORD    pointer to new page structure (struct VPGE)
  9145.         ---if "info"---
  9146.          no additional arguments
  9147.         ---if "move"
  9148.          DWORD    32-bit source address
  9149.          DWORD    32-bit destination address
  9150.          WORD    number of words to move
  9151.         ---if "newmcb"---
  9152.          DWORD    pointer to new MCB's location
  9153.          WORD    size of memory block
  9154.          DWORD    pointer to ASCIZ name string (max 8 chars)
  9155.         ---if "owner"---
  9156.          WORD    MCB or PSP segment
  9157.         ---if "umb"---
  9158.          WORD    size in paragraphs
  9159.         ---if "video"---
  9160.          no additional arguments
  9161. Return: DX:AX -> memory block or VPGE struct or 0000h:0000h
  9162. SeeAlso: AH=00h"VMiX",AH=01h"VMiX"
  9163. --------T-1502-------------------------------
  9164. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
  9165.     AH = 02h
  9166.     AL = semaphore number (00h-3Fh)
  9167. Return: AH = status
  9168.         00h successful
  9169.         01h not semaphore owner
  9170.         02h invalid semaphore number
  9171. Notes:    if any tasks are waiting for the semaphore, the first task on the wait
  9172.       queue will become the new owner and be reawakened
  9173.     do not use within an interrupt handler
  9174. SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS"
  9175. --------B-1503-------------------------------
  9176. INT 15 - CASSETTE - WRITE DATA (PC and PCjr only)
  9177.     AH = 03h
  9178.     CX = number of bytes to write
  9179.     ES:BX -> data buffer
  9180. Return: CF clear if successful
  9181.         ES:BX -> byte following last byte written
  9182.     CF set on error
  9183.     AH = status (see #00409)
  9184.     CX = 0000h
  9185. SeeAlso: AH=00h"CASSETTE",AH=02h"CASSETTE"
  9186. --------V-1503-------------------------------
  9187. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
  9188.     AH = 03h
  9189.     AL = value (I,R,G,B bits)
  9190. Return: nothing
  9191. SeeAlso: AH=04h"Amstrad"
  9192. --------O-1503-------------------------------
  9193. INT 15 - VMiX - "sys_pinput" - PROMPTED CONSOLE INPUT
  9194.     AH = 03h
  9195.     STACK:    DWORD    pointer to ASCII prompt
  9196.         WORD    field outline character
  9197.         WORD    length of input field (max 7Fh)
  9198.         DWORD    address of pointer to input buffer
  9199. Return: AX = length of input (input buffer is padded with blanks)
  9200. SeeAlso: AH=04h"VMiX"
  9201. --------T-1503-------------------------------
  9202. INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
  9203.     AH = 03h
  9204.     DX = number of time slices to remain suspended
  9205. Return: after specified interval has elapsed
  9206. Note:    when priority-based scheduling is in use, high-priority tasks should
  9207.       use this function to yield the processor
  9208. SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS"
  9209. --------B-1504-------------------------------
  9210. INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
  9211.     AH = 04h
  9212.     ES:DI -> 32-byte results buffer for System Parameter Table (see #00410)
  9213.     DS = segment containing ABIOS RAM extensions (zero if none)
  9214. Return: CF clear if successful
  9215.         AH = 00h success
  9216.         ES:DI buffer filled
  9217.         AL destroyed
  9218.     CF set on failure
  9219.         AX destroyed
  9220.         AH = 80h/86h if not supported
  9221. SeeAlso: AH=05h"ABIOS",AH=C1h
  9222.  
  9223. Format of ABIOS System Parameter Table:
  9224. Offset    Size    Description    (Table 00410)
  9225.  00h    DWORD    FAR address of ABIOS Common Start Routine
  9226.  04h    DWORD    FAR address of ABIOS Interrupt Routine
  9227.  08h    DWORD    FAR address of ABIOS Time-out Routine
  9228.  0Ch    WORD    number of bytes of stack required by this ABIOS implementation
  9229.  0Eh 16 BYTEs    reserved
  9230.  1Eh    WORD    number of entries in initialization table
  9231. --------V-1504-------------------------------
  9232. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
  9233.     AH = 04h
  9234.     AL = value (RDSEL1 and RDSEL0)
  9235. Return: nothing
  9236. SeeAlso: AH=03h"Amstrad",AH=05h"Amstrad"
  9237. --------O-1504-------------------------------
  9238. INT 15 - VMiX - "sys_vprintf" - FORMATTED OUTPUT TO STREAM
  9239.     AH = 04h
  9240.     STACK:    DWORD    control string
  9241.         DWORD    array of arguments
  9242. Return: nothing
  9243. SeeAlso: AH=03h"VMiX"
  9244. --------T-1504-------------------------------
  9245. INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
  9246.     AH = 04h
  9247.     AL = mailbox number (00h-3Fh)
  9248.     CX = message length in bytes
  9249.     DS:SI -> message
  9250. Return: AH = status
  9251.         00h successful
  9252.         01h out of message memory
  9253.         02h invalid mailbox number
  9254. Note:    the message is copied into a system buffer; the caller may immediately
  9255.       reuse its buffer
  9256. SeeAlso: AH=05h"MultiDOS"
  9257. --------B-1505-------------------------------
  9258. INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS)
  9259.     AH = 05h
  9260.     ES:DI -> results buffer of length 18h * Number_of_Entries (see #00411)
  9261.     DS = segment containing ABIOS RAM extensions (zero if none)
  9262. Return: CF clear if successful
  9263.         AH = 00h success
  9264.         ES:DI buffer filled
  9265.         AL destroyed
  9266.     CF set on failure
  9267.         AX destroyed
  9268.         AH = 80h/86h if not supported
  9269. SeeAlso: AH=04h"ABIOS",AH=C1h
  9270.  
  9271. Format of one entry of ABIOS Initialization Table:
  9272. Offset    Size    Description    (Table 00411)
  9273.  00h    WORD    device ID (see #00412)
  9274.  02h    WORD    number of Logical IDs
  9275.  04h    WORD    Device Block length (zero for ABIOS patch or extension)
  9276.  06h    DWORD    -> init routine for Device Block and Function Transfer Table
  9277.  0Ah    WORD    request block length
  9278.  0Ch    WORD    Function Transfer Table length (zero for a patch)
  9279.  0Eh    WORD    Data Pointers length (in Common Data Area)
  9280.  10h    BYTE    secondary device ID (hardware level this ABIOS ver supports)
  9281.  11h    BYTE    revision (device driver revision level this ABIOS supports)
  9282.  12h  6 BYTEs    reserved
  9283.  
  9284. (Table 00412)
  9285. Values for ABIOS device ID:
  9286.  00h    ABIOS internal calls
  9287.  01h    floppy disk
  9288.  02h    hard disk
  9289.  03h    video
  9290.  04h    keyboard
  9291.  05h    parallel port
  9292.  06h    serial port
  9293.  07h    system timer
  9294.  08h    real-time clock
  9295.  09h    system services
  9296.  0Ah    NMI
  9297.  0Bh    mouse
  9298.  0Eh    CMOS RAM
  9299.  0Fh    DMA
  9300.  10h    Programmable Option Select (POS)
  9301.  16h    keyboard password
  9302. --------V-1505-------------------------------
  9303. INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
  9304.     AH = 05h
  9305.     AL = value (I,R,G,B bits)
  9306. Return: nothing
  9307. SeeAlso: AH=04h"Amstrad"
  9308. --------O-1505-------------------------------
  9309. INT 15 - VMiX - "sys_getpid" - GET PROCESS ID OF CURRENT PROCESS
  9310.     AH = 05h
  9311. Return: AX = process ID
  9312. SeeAlso: AH=06h"VMiX",AH=0Bh"VMiX"
  9313. --------T-1505-------------------------------
  9314. INT 15 - MultiDOS Plus - CHECK MAILBOX
  9315.     AH = 05h
  9316.     AL = mailbox number (00h-3Fh)
  9317. Return: AH = status
  9318.         00h successful
  9319.         DX = length of first message in queue, 0000h if no message
  9320.         02h invalid mailbox number
  9321. SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS"
  9322. --------b-1506-------------------------------
  9323. INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
  9324.     AH = 06h
  9325. Return: BX = version number
  9326. --------O-1506-------------------------------
  9327. INT 15 - VMiX - "sys_getpcb" - GET POINTER TO PROCESS CONTROL BLOCK
  9328.     AH = 06h
  9329.     STACK:    WORD    process ID
  9330. Return: DX:AX -> process control block
  9331. SeeAlso: AH=05h"VMiX",AH=07h"VMiX",AH=08h"VMiX"
  9332. --------T-1506-------------------------------
  9333. INT 15 - MultiDOS Plus - READ MAILBOX
  9334.     AH = 06h
  9335.     AL = mailbox number (00h-3Fh)
  9336.     CX = size of buffer in bytes
  9337.     ES:DI -> buffer for message
  9338. Return: AH = status
  9339.         00h successful
  9340.         CX = number of bytes copied
  9341.         DX = actual length of message
  9342.         02h invalid mailbox number
  9343. Note:    if the caller's buffer is not large enough, the message is truncated
  9344.       and the remainder is lost
  9345. SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS"
  9346. --------O-1507-------------------------------
  9347. INT 15 - VMiX - "sys_getocb" - GET POINTER TO OBJECT CONTROL BLOCK
  9348.     AH = 07h
  9349.     STACK:    WORD    object type
  9350. Return: DX:AX -> object control block
  9351. SeeAlso: AH=06h"VMiX",AH=08h"VMiX"
  9352. ----------1507-------------------------------
  9353. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  9354.     AH = 07h
  9355. SeeAlso: AH=08h"IBM"
  9356. --------T-1507-------------------------------
  9357. INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
  9358.     AH = 07h
  9359.     BX:CX = entry point of new task
  9360.     DX = stack size in paragraphs
  9361. Return: AH = status
  9362.         00h successful
  9363.         01h no free task control blocks
  9364.         02h no free memory for task's stack
  9365. Note:    execution returns immediately to calling task
  9366. SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS"
  9367. --------O-1508-------------------------------
  9368. INT 15 - VMiX - "sys_getccb" - GET CHANNEL CONTROL BLOCK
  9369.     AH = 08h
  9370.     STACK:    WORD    channel ID
  9371. Return: DX:AX -> channel control block
  9372. SeeAlso: AH=06h"VMiX",AH=07h"VMiX"
  9373. --------B-1508-------------------------------
  9374. INT 15 - IBM SurePath BIOS - WAIT REQUESTED TIME PERIOD
  9375.     AH = 08h
  9376.     AL = function
  9377.         00h wait in increments of 15.025 microseconds
  9378.         CX = number of time increments to wait (0000h = maximum)
  9379.         80h wait in increments of 840 ns
  9380.         ECX = number of time increments to wait
  9381.         81h I/O event wait
  9382.         BH = bitmask of bits to check
  9383.         BL = expected pattern
  9384.         DX = I/O port address
  9385.         ECX = number of 840 ns microticks to wait
  9386.         Return: ECX = 00000000h if expected pattern did not occur
  9387.         82h memory event wait
  9388.         BH = bitmask of bits to check
  9389.         BL = expected pattern
  9390.         ES:SI -> BYTE to check
  9391.         ECX = number of 840 ns microticks to wait
  9392.         Return: ECX = 00000000h if expected pattern did not occur
  9393.         other reserved
  9394. Return: CF clear if successful
  9395.     CF set on error
  9396.     AH = status
  9397.         00h successful
  9398.         01h used 15.025 microsecond interval, time rounded up
  9399.         08h reserved subfunction
  9400.         86h function not supported
  9401. Notes:    IBM classifies this function as optional
  9402.     if the POST determines that the timer is nonfunctional, this function
  9403.       uses the 15.025 microsecond refresh timer instead of the
  9404.       full-resolution timer
  9405. SeeAlso: AH=07h"IBM",AH=09h"IBM",AH=86h
  9406. --------T-1508-------------------------------
  9407. INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
  9408.     AH = 08h
  9409. Return: calling task terminated, so execution never returns to caller
  9410. Notes:    an internal task must be terminated with this function rather than a
  9411.       DOS termination function
  9412.     task's stack space is returned to parent task's memory pool
  9413. SeeAlso: AH=07h"MultiDOS"
  9414. --------O-1509-------------------------------
  9415. INT 15 - VMiX - "sys_getqueue" - GET ID OF QUEUED ELEMENT
  9416.     AH = 09h
  9417.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  9418.         WORD    subqueue ID
  9419. Return: AX = queue ID
  9420. SeeAlso: AH=0Ah"VMiX"
  9421. ----------1509-------------------------------
  9422. INT 15 - IBM BIOS - RESERVED FOR PCMCIA SYSTEM RESOURCE TABLE ACCESS
  9423.     AH = 09h
  9424.     no further details available
  9425. SeeAlso: AH=08h"IBM"
  9426. --------T-1509-------------------------------
  9427. INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
  9428.     AH = 09h
  9429.     AL = new priority
  9430. Return: nothing
  9431. Note:    the priority has different meanings depending on whether priority-
  9432.       based or round-robin scheduling is used
  9433. SeeAlso: AH=07h"MultiDOS"
  9434. --------O-150A-------------------------------
  9435. INT 15 - VMiX - "sys_qetqnext" - GET ID OF NEXT QUEUED ELEMENT
  9436.     AH = 0Ah
  9437.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  9438.         WORD    ID of current element in queue chain
  9439. Return: AX = ID of next element
  9440. SeeAlso: AH=09h"VMiX",AH=0Fh"VMiX"
  9441. --------T-150A-------------------------------
  9442. INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
  9443.     AH = 0Ah
  9444.     AL = new interval
  9445.         00h = 55.0 ms (default)
  9446.         80h = 27.5 ms
  9447.         40h = 13.75 ms
  9448.         20h = 6.88 ms
  9449.         10h = 3.44 ms
  9450.         08h = 1.72 ms
  9451. SeeAlso: AH=03h"MultiDOS"
  9452. --------O-150B-------------------------------
  9453. INT 15 - VMiX - "sys_sysreq" - SYSTEM CONFIGURATION MANAGER
  9454.     AH = 0Bh
  9455.     STACK:    WORD    caller's UID
  9456.         DWORD    pointer to ASCIZ name of requested method
  9457.             "abort" abort current send/receive on comm port
  9458.             "block" start/end critical section
  9459.             "close" terminate interrupt-drive comm I/O
  9460.             "open" prepare comm port for interrupt-driven I/O
  9461.             "delay" set delay timer and wait
  9462.             "hibernate" put process to sleep
  9463.             "ints" enable/disable interrupt-driven INT 14h
  9464.             "length" get current send/receive buffer offsets
  9465.             "kswitch" switch stacks
  9466.             "numproc" get number of active processes
  9467.             "protocol" set protocol function for comm interrupts
  9468.             "relocate" set/reset VMiX flag for relocating to himem
  9469.             "status" get current open comm port status
  9470.             "wake" awaken a process
  9471.             "xport" get comm port polled for logins
  9472.         ---if "abort"---
  9473.          no additional arguments
  9474.         ---if "block"---
  9475.          WORD    0000h end, 0001h start
  9476.         ---if "close"---
  9477.          no additional arguments
  9478.         ---if "open"---
  9479.          WORD    comm port (00h-03h)
  9480.          WORD    BIOS parameter byte (see #00300 at INT 14/AH=00h),
  9481.             except bits 7-5: 000 = 19200, 001 = 38400, 011 = 115200
  9482.         ---if "delay"---
  9483.          WORD    time in seconds
  9484.         ---if "hibernate"---
  9485.          WORD    process ID
  9486.         ---if "ints"---
  9487.          WORD    0000h if no, 0001h if yes
  9488.         ---if "length","numproc","relocate","status","xport"---
  9489.          no additional arguments
  9490.         ---if "kswitch"---
  9491.          DWORD    pointer to new stack
  9492.         ---if "protocol"---
  9493.          DWORD    pointer to function (must be in low "assign"ed memory
  9494.             when in 386 mode)
  9495.         ---if "wake"---
  9496.          WORD    process ID
  9497. Return: DX:AX -> result or 0000h:0000h
  9498.         ---if "length"---
  9499.          BYTE    receive offset
  9500.          BYTE    send offset
  9501.         ---if "kswitch"---
  9502.          DWORD    old stack pointer
  9503.         ---if "numproc"---
  9504.          WORD    number of active processes
  9505.         ---if "status"---
  9506.          current open comm port status
  9507.         ---if "xport"---
  9508.          current comm port being polled for logins
  9509. Note:    the "delay" command reportedly disables the keyboard until the delay
  9510.       completes
  9511. SeeAlso: AH=05h"VMiX",AH=0Eh"VMiX"
  9512. --------T-150B-------------------------------
  9513. INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
  9514.     AH = 0Bh
  9515. Return: nothing
  9516. Notes:    sets calling task's screen pointer to actual screen memory; the pointer
  9517.       may be restored with AH=0Ch
  9518.     caller's video mode must be same as foreground task's video mode
  9519.     any text written while in the background will be saved to the
  9520.       foreground task's virtual screen when it switches to the background
  9521.     useful if a background task wants to display a message on the
  9522.       foreground screen
  9523. SeeAlso: AH=0Ch"MultiDOS"
  9524. --------O-150C-------------------------------
  9525. INT 15 - VMiX - "sys_getstack" - GET POINTER TO PROCESS TSS STACK
  9526.     AH = 0Ch
  9527.     STACK:    WORD    process ID
  9528. Return: DX:AX -> TSS stack store
  9529. SeeAlso: AH=00h"VMiX"
  9530. --------T-150C-------------------------------
  9531. INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
  9532.     AH = 0Ch
  9533. Return: nothing
  9534. Note:    restores task's screen pointer saved by AH=0Bh; must not be called
  9535.       unless AH=0Bh has been called first
  9536. SeeAlso: AH=0Bh"MultiDOS"
  9537. --------O-150D-------------------------------
  9538. INT 15 - VMiX - "sys_spawn" - START A CHILD PROCESS JOB SHELL
  9539.     AH = 0Dh
  9540.     STACK:    DWORD    ASCIZ string starting with requested I/O channel and
  9541.             followed by standard VMiX shell command string
  9542. Return: AX = process ID or error code "SYS_ERROR"
  9543. Note:    the maximum string length is 7Fh characters
  9544. SeeAlso: AH=0Eh"VMIX",AH=11h"VMiX",INT 21/AH=4Bh
  9545. --------T-150D-------------------------------
  9546. INT 15 - MultiDOS Plus - DISABLE MULTITASKING
  9547.     AH = 0Dh
  9548. Return: nothing
  9549. Note:    calling task receives all time slices until AH=0Eh is called; this
  9550.       allows time-critical events or nonreentrant code to be processed
  9551. SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS"
  9552. --------O-150E-------------------------------
  9553. INT 15 - VMiX - "sys_kill" - HARD TERMINATE PROCESS
  9554.     AH = 0Eh
  9555.     STACK:    WORD    process ID
  9556. Return: AX = status (SYS_OK or SYS_ERROR)
  9557. SeeAlso: AH=0Bh"VMiX",AH=0Dh"VMIX"
  9558. --------T-150E-------------------------------
  9559. INT 15 - MultiDOS Plus - ENABLE MULTITASKING
  9560.     AH = 0Eh
  9561. Return: nothing
  9562. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS"
  9563. --------d-150F-------------------------------
  9564. INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
  9565.     AH = 0Fh
  9566.     AL = phase code
  9567.         00h reserved
  9568.         01h surface analysis
  9569.         02h formatting
  9570. Return: CF clear if formatting should continue
  9571.     CF set if formatting should terminate
  9572. Note:    called during ESDI drive formatting after each cylinder is completed
  9573. SeeAlso: INT 13/AH=1Ah
  9574. --------O-150F-------------------------------
  9575. INT 15 - VMiX - "sys_getqkey" - GET KEY FIELD OF QUEUED ELEMENT
  9576.     AH = 0Fh
  9577.     STACK:    WORD    queue ID (0 = process queue, 1 = object q, 3 = type q)
  9578.         WORD    ID of element in queue chain
  9579. Return: AX = key
  9580. SeeAlso: AH=0Ah"VMiX"
  9581. --------T-150F-------------------------------
  9582. INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
  9583.     AH = 0Fh
  9584.     DS:BX -> ASCIZ command
  9585. Return: after command has been processed
  9586. Notes:    specified string is executed as if it had been typed at the MultiDOS
  9587.       command prompt
  9588.     the task is placed on a queue which MultiDOS examines periodically and
  9589.       is suspended until MultiDOS has processed the command
  9590.     all lowercase characters up to the first blank are converted to upper
  9591.       case within the given buffer
  9592. --------!---Section--------------------------
  9593.